我有一个小问题。 我有一个使用这些格式查看某些PHP文档的站点:
domainname.com/server.php?id=14
domainname.com/changeserver.php?id=14
domainname.com/customize.php?id=14
我想做这些:
domainname.com/server/14
domainname.com/changeserver/14
domainname.com/customize/14
我还有各种网址,例如/index.php
和/login.php
我想要清理。
如果有人要输入原始网址,例如/server.php?id=14
,我希望它重定向到它的干净网址。
如果有人可以为我提供配置或帮助我制作可以做到这一点的配置,我们将不胜感激。
答案 0 :(得分:0)
为了防止无限循环,同时将丑陋的url重定向到干净的url并在内部将其重写回丑陋的url,你可以使用THE_REQUEST
技巧。
#External redirect
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(server|changeserver|customize)\.php\?id=([^&]+)\ HTTP
RewriteRule ^ /%2/%3? [R,L]
#Change above to [R=301,L] once all rules work as expected
#Internal rewrite
RewriteRule ^(server|changeserver|customize)/(.*)$ /$1?id=$2 [L]
答案 1 :(得分:0)
您需要在.htaccess文件中重写您的网址。
RewriteEngine On
RewriteRule ^server/(.*)$ server.php?id=$1 [R=301,L]
这是一个很好的URL重写指南
http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/
答案 2 :(得分:0)
在这种情况下,您必须使用301重定向URLS。这是一个例子:
重定向
www.example.com/a1/articles.php?id=1&name=abc
到
www.example.com/article/1/abc
为此,您必须使用以下内容修改.htaccess文件:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=(.*)&name=(.*)$
RewriteRule ^articles\.php$ /article/%1/%2? [R=301]
RewriteRule ^article/([^-]+)/([^-]+)$ /articles.php?article_id=$1&article_name=$2 [L]
答案 3 :(得分:0)
RewriteEngine On
RewriteRule ^server/([A-Za-z0-9-_,()'+]+)?$ server.php?id=$1
RewriteRule ^changeserver/([A-Za-z0-9-_,()'+]+)?$ changeserver.php?id=$1
RewriteRule ^customize/([A-Za-z0-9-_,()'+]+)?$ customize.php?id=$1
答案 4 :(得分:0)
适应您的代码。这是答案。
选项+ FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^server\.php$ /server/%1? [R=301]
RewriteRule ^server/([^-]+)$ /server.php?id=$1 [L]
检查以上代码。我想这会对你有帮助。