我的. htaccess文件:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ photo.php?id=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ photo.php?id=$1
我的目标是转换urlmysite。com/photo。php?id=31到mysite。com/31
。但是当我访问mysite时。com/31,我得到的只是:
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求。
请与服务器管理员联系,admin@localhost并告知他们错误发生的时间,以及您可能采取的任何可能导致错误的措施。
有关此错误的详细信息可在服务器错误日志中找到。
我在wamp服务器上运行它。
编辑:
我当前的url看起来像这样:http://localhost:8080/img/photo.php?id=1
。我需要添加/img
-part到htaccess吗?
如果您希望能够通过URLhttp://mysite.com/31
访问图像,请注意,URL中没有/img/
目录,您需要将重写规则放在文档根目录中的htaccess文件中...img
目录所在的目录。由于我还将假设您的站点上除了图像之外还有其他内容,因此您将需要检查您是否正在重写非图像请求,并且您可以通过检查%{REQUEST_FILENAME}
和!-f
和!-d
标志。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/?$ /img/photo.php?id=$1 [L]
此外,如果您试图通过URL(如:URL)访问图像,那么您现有的规则也可以http://mysite.com/img/31
,还有其他原因导致您的500服务器错误。请确保已加载“重写”模块。在WAMP中,右键单击WAMP图标并转到apache,然后单击apache模块并确保选中了“重写模块”。
试试这个
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\-]+)$ photo.php?id=$1
</IfModule>