1

我的 .htaccess 文件:

RewriteEngine On

RewriteRule ^([a-zA-Z0-9_-]+)$ photo.php?id=$1

RewriteRule ^([a-zA-Z0-9_-]+)/$ photo.php?id=$1

我的目标是将 url 转换mysite.com/photo.php?id=31mysite.com/31. 但是当我访问时mysite.com/31,我得到的只是:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员 admin@localhost 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。

服务器错误日志中可能提供有关此错误的更多信息。

我在 wamp 服务器上运行它。

编辑:

我当前的网址如下所示:http://localhost:8080/img/photo.php?id=1。我需要将/img-part 添加到 htaccess 吗?

4

2 回答 2

1

试试这个

<IfModule mod_rewrite.c>    
    Options +FollowSymLinks    
    RewriteEngine On

    RewriteRule ^([a-zA-Z0-9_\-]+)$ photo.php?id=$1    
</IfModule>
于 2012-09-11T17:45:43.337 回答
1

如果您希望能够通过 URL 访问图像http://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 访问图像,您现有的规则就很好:http://mysite.com/img/31,还有其他原因导致您的 500 服务器错误。请确保已加载重写模块。在 WAMP 中,右键单击 WAMP 图标并转到apache,然后选择apache 模块并确保选中了rewrite 模块。

于 2012-09-11T17:55:28.250 回答