2014-03-07 52 views
0

我有这段代码,将domain.com/Birthdays/birthdays.php?n=Something转换为domain.com/Birthdays/Something,并为其他页面取下.php和.html文件:.htaccess代码给出的错误500

RewriteEngine on 
RewriteRule ^Birthday/(\w+)$ /Birthdays/birthdays.php?n=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

问题是当我补充一点:

RewriteEngine on 
RewriteRule ^Birthdays/(.*)$ [L] 
RewriteRule ^Birthday/(\w+)$ /Birthdays/birthdays.php?n=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

它给了我一个错误(500),但如果我改变对(\ w +),它的工作原理(*)。但我不想那样。

回答

0

您可以使用:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^Birthday/(\w*)$ /Birthdays/birthdays.php?n=$1 [L,QSA] 

你得到500由于循环错误为您的规则的模式匹配起点和重写的URI。