2012-12-10 183 views
0

我有一個非常具體的問題。 該標題給出了很多其他問題有正確的答案,但我不知道如何適應我自己的重寫規則。可選結尾斜槓mod_rewrite

我的.htaccess看起來像這樣:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^[^/]*/?$ index.php [NC,L] 
RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$) 
RewriteRule ^dev/zeroyear/([^/]+)/?([^/]*)/?([^/]*)/?([^/]*)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA] 

我想下面的2個網址重定向到同一頁:

http://timesheep.name/dev/zeroyear/news 
http://timesheep.name/dev/zeroyear/news/ 

最後重寫規則是造成500因爲這個問題的標記我放,但日誌什麼也沒說。如果我把它改成這樣:

RewriteRule ^dev/zeroyear/([^/]+)/([^/]*)/?([^/]*)/?([^/]*)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA] 

錯誤消失,但http://timesheep.name/dev/zeroyear/news會返回一個404

我能做些什麼呢?

+1

我想我錯過了一些東西......對我來說,原來的規則和你所擁有的變化是一樣的。你做了什麼改變? – Wige

+0

@Wige是的,我犯了一個小錯,現在已經糾正了。 –

回答

1

你已經混合了非貪婪的匹配(它將吃掉可選/'s)和可選/的所有混合在一起。嘗試將它們分離爲不同的匹配項:

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$) 
RewriteRule ^dev/zeroyear/([^/]+)/([^/]+)/([^/]+)/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA] 

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$) 
RewriteRule ^dev/zeroyear/([^/]+)/([^/]+)/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3 [L,QSA] 

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$) 
RewriteRule ^dev/zeroyear/([^/]+)/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2 [L,QSA] 

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$) 
RewriteRule ^dev/zeroyear/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1 [L,QSA] 
+0

那裏沒有區別。 –