通过htaccess重定向无法正常工作

时间:2012-02-18 11:34:26

标签: .htaccess url-rewriting

我想重写下面的网址:

网址:http://localhost/my_site/?file_name=sample

这是我想要显示的网址:

网址:http://localhost/my_site/sample

这意味着我想删除file_name参数并获取参数值并在URL中设置它,为了设置这个我使用下面的代码:

RewriteEngine On
RewriteBase /my_site/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ /?file_name=$1 [QSA,L]

但它不起作用,当我输入 http:// localhost / my_site / sample 时,它显示我本地所有网站的列表,这意味着它将我带到 http: // localhost 而不是require页面。我做错了什么?

请帮助,提前致谢

2 个答案:

答案 0 :(得分:1)

假设mysite文件夹位于DocumentRoot下。将此添加到您的

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !\.\w+$
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) /$1/ [R,L]

RewriteCond %{REQUEST_URI} ^/(my_site)/([\w\d-]+)/$ [NC]
RewriteRule ^ %1/?file_name=%2 [L,QSA]

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} (?:(.*)&)?file_name=([\w\d-]+)(.*) [NC]
RewriteRule ^(my_site) $1/%2/?%1%3 [L,R]

对于服务器端:

RewriteCond %{REQUEST_URI} ^/([\w\d-]+)/$ [NC]
RewriteRule ^ /?file_name=%1 [L,QSA]

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} (?:(.*)&)?file_name=([\w\d-]+)(.*) [NC]
RewriteRule ^ %2/?%1%3 [L,R]

答案 1 :(得分:0)

试试这个,如果有效:

RewriteEngine On
RewriteBase /my_site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ file_name=/$1 [L]  

警告:未经测试