我已经搜索了这个问题,但我只会遇到真正具体的答案,似乎很难适应我的具体需求。.htaccess重写查询字符串为路径
比方说,我试图重写URL是这样的:
http://www.example.org/test.php?whatever=something
我想重写它,使它看起来就象这样:
http://www.example.org/test/something
我怎样才能做到这一点?
我已经搜索了这个问题,但我只会遇到真正具体的答案,似乎很难适应我的具体需求。.htaccess重写查询字符串为路径
比方说,我试图重写URL是这样的:
http://www.example.org/test.php?whatever=something
我想重写它,使它看起来就象这样:
http://www.example.org/test/something
我怎样才能做到这一点?
为了航线像/test/something
的请求在内部重写,这样在/test.php?whatever=something
内容被提供服务,你会使用htaccess的文件,这些规则在您的文档根目录:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?test/(.*?)/?$ /test.php?whatever=$1 [L]
而且为了重定向查询字符串URL到更好看的一个:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /test\.php\?whatever=([^\&\ ]+)
RewriteRule ^/?test\.php$ /test/%1? [L,R=301]
绝对完美的,谢谢! – UserIsCorrupt
如果通过使用上面的代码,如果某人在尾部查询字符串中有问题,那么他们只需要在最后一条规则末尾添加尾部问号,这里是一个更新代码 'RewriteCond%{THE_REQUEST}^[AZ] {3, 9} \ /test\.php\?whatever =([^ \&\] +) RewriteRule^/?test \ .php $/test /%1? [L,R = 301]' –
我使用相同的规则,但它不工作我的网址是http://example.com/directory1/directory2/login.php?id=8,我想使它像http: //example.com/directory1/directory2/login/8请告诉我如何解决它 –
下面是一些例子:https://wiki.apache.org/httpd/RewriteQueryString –