提问者:小点点

使用htaccess重写规则创建“内部服务器错误”的漂亮url


我的. 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吗?


共2个答案

匿名用户

如果您希望能够通过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>