2012-04-04 65 views
0

这里是我的htaccess的样子:队在重写的查询字符串的结尾斜线

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www.site.com$ [NC] 
RewriteRule .? http://site.com%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_URI} /page1/([^?].*)$ [NC] 
RewriteRule /page1/(.*)$ /page1/?$1 [L] # change /page1/stuff to /page1/?stuff 
# End rewriting for page1 


RewriteCond %{REQUEST_URI} /page2/([^?].*)$ [NC] 
RewriteRule /page2/(.*)$ /page2/?$1 
# End rewriting for page2 



RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/ 
RewriteRule ^(([^/]+/)*)index\.php$ http://%{HTTP_HOST}/$1 [R=301,NS,L] 

Options -Indexes 

我也希望是有它,如果用户进入site.com/page1/stuffsite.com/page1/stuff/more它将添加结尾斜杠地址栏并将其更改为site.com/page1/stuff/site.com/page1/stuff/more/但我没有尝试过。有没有办法做到这一点,而不会导致重定向循环?

我想我所有的网址都有一个斜线,我看到目录已经这样做了。

编辑:为了澄清,我想最后的斜线是对用户可见,但不是?

+0

您可以添加一个斜杠'/ $ 1' =>'/ $ 1 /' – 2012-04-04 12:10:31

+0

@ShaktiSingh后:a)这些更改不会发生在地址栏中(即用户永远不会在url中看到'?')和b)如果查询字符串以'/'结尾,那么我不需要另一个。 – qwertymk 2012-04-04 12:14:54

+0

'RewriteCond%{REQUEST_URI}/page2 /([^?].*)$''不会匹配'/ page2 /?stuff'(因为在这种情况下%{REQUEST_URI}将会是='/ page2 /')。要匹配QUERY STRING,您必须使用'RewriteCond%{QUERY_STRING} PATTERN_HERE' - 查询字符串(在此特定示例中)将只是“stuff”。 – LazyOne 2012-04-04 12:20:05

回答

0

感谢该链接@LazyOne,反正这个作品:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]