我有一种潜行的怀疑,这是不可能的,但我想不管怎么说。
是否可以采用以下形式传递给服务器的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,但我宁愿尽可能避免这种开销。
有什么想法吗?
谢谢!
答案 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]