我看到另一个stackoverflow答案来提出当前的设置。 我希望http://myserver.com/book/1234的请求实际显示来自php文件http://myserver.com/book.php?id=1234
的内容所以我的.htaccess看起来像这样:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^book/(.*)$ /book.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
请注意,底部的两行允许我使用类似http://myserver.php/login的网址来实际提取http://myserver.php/login.php这是正常的。 但是当我尝试拨打http://myserver.com/book/1234时出现了500错误?有什么问题?
答案 0 :(得分:1)
您的代码指示服务器仅在查询字符串存在时才进行重写。因此,该规则仅在您请求/book/1234?id=1234
时才有效。
删除下面的行将允许您的重写工作。
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$