在我的本地服务器上,我有一个包含以下规则的.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!menu/)([^\.]+)$ $1.php [NC,L]
RewriteRule ^menu/([^\.]+)$ item.php?url=$1 [NC,L]
它适用于我的计算机上的服务器,但规则在我的公共测试服务器上不起作用。我的电脑是mac mini,我正在使用MAMP。测试服务器是MAC OS X Server版本10.8.5。此外,我知道.htaccess文件已启用并正在测试服务器上运行。
测试服务器上的问题是它没有识别网址中的菜单/。它会识别菜单,但不会识别末尾的斜线。我想要做的是获得一个看起来像/ menu / soft-taco重定向到item.php的网址?url = soft-taco。
答案 0 :(得分:1)
在两个规则中添加一个尾随的可选斜杠,并尝试颠倒规则的顺序:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^menu/([^/.]+)/?$ item.php?url=$1 [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/?$ $1.php [L]