我想改变:
localhost/article.php?id=bryan
简单地说:
localhost/article/bryan
如果是这样的话:
localhost/article.php?id=Mark%20Henry%20is%20Drawing
我需要将其改为:
localhost/article/mark-henry-drawing
这里的一位老乡给了我这个代码:
RewriteEngine On
RewriteRule ^article/([^/]*)$ /article.php?id=$1 [L]
每个人都说应该这样做,但每次输入时我仍然会收到内部服务器错误:
localhost/article/bryan
我正在使用WAMP服务器,如果它有帮助,以下代码是我的整个.htaccess
文件:
Options +FollowSymLinks
RewriteEngine On
# Removes the .php extension from pages
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]
# Cleans up the PHP URL of all pages on website
RewriteRule ^article/([^/]*)$ /article.php?id=$1 [L]
我不知道还有什么可以尝试。
答案 0 :(得分:1)
当前.htaccess
的问题是它进入循环导致内部服务器错误。
要制作您想要的工作,您需要在请求中捕获URL并重定向它,然后在内部将其重定向:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# Redirect /article.php?id=bryan to /article/bryan
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+article\.php\?id=([^\s]+) [NC]
RewriteRule ^ /article/%1? [R=302,L]
# Internally forward /article/bryan to /article.php?id=bryan
RewriteRule ^article/([^/]+)/?$ /article.php?id=$1 [L,NC]
但是,没有简单的方法可以将%20
转换为空格或-
,您必须从系统中解决这个问题。