如何使用.htaccess创建干净的URL显示脏URL?

时间:2014-01-07 04:56:46

标签: php html apache .htaccess

我有一个小问题。 我有一个使用这些格式查看某些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,我希望它重定向到它的干净网址。

如果有人可以为我提供配置或帮助我制作可以做到这一点的配置,我们将不胜感激。

5 个答案:

答案 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]

检查以上代码。我想这会对你有帮助。