2012-04-04 63 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]