Apache htaccess重写(漂亮的URL)

时间:2014-10-20 19:55:00

标签: apache .htaccess mod-rewrite

我有一种潜行的怀疑,这是不可能的,但我想不管怎么说。

是否可以采用以下形式传递给服务器的URL:

http://domain.com/index.php?Action=Controller/Action&one=1&two=2&three=3

并将其重写为:

http://domain.com/Controller/Action/1/2/3

我正在尝试清理一个边缘古老的项目来支持"漂亮的网址"我真的想让URL显示得更好一些。我知道我可以设置一个301头重定向到新的URL,但我宁愿尽可能避免这种开销。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

获得

http://domain.com/index.php?Action=Controller/Action&one=1&two=2&three=3

显示为

http://domain.com/Controller/Action/1/2/3

您需要使用%{QUERY_STRING}来捕获查询字符串数据。您的.htaccess文件将如下所示:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^Action=Controller/Action&one=(\d+)&two=(\d+)&three=(\d+)
RewriteRule ^.+ /Controller/Action/%1/%2/%3 [R=301,L]

这将设置永久重定向到新页面。您可以在这里玩游戏并测试.htaccess重写规则:htaccess.madewithlove.be

答案 1 :(得分:0)

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ index.php?Action=$1/$2&one=$3&two=$4&three=$5 [L,QSA]