2013-05-18 79 views
0

如何重写此URL?RewriteEngine隐藏扩展名和GET

http://website.com/file.php?lang=enhttp://website.com/file/en

文件名和参数可以改变,我发现很多话题就把我没有发现两个扩展的组合和GET参数

更新:我得到这个工作隐藏PHP扩展现在如何添加参数

# Turn mod_rewrite on 
RewriteEngine On 

# hide .php extension 
# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R=302,L] 

# To internally forward /dir/file to /dir/file.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php [L,QSA] 

回答

0

试试这个配置

RewriteEngine On 
RewriteRule ^file/([a-zA-Z0-9_-]+)$ file.php?lang=$1 
1

从代码和注释,我可以说这是我的一个答案:P

为了获得在这个地方新http://website.com/file.php?lang=en to http://website.com/file/en有你的.htaccess这样的:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^([^/]+)/([^/]+)/?$ /$1.php?lang=$2 [L,QSA] 

# hide .php extension 
# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R=302,L] 

# To internally forward /dir/file to /dir/file.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.+?)/?$ $1.php [L]