Apache URL重写查询字符串

时间:2018-09-09 06:57:32

标签: apache .htaccess mod-rewrite url-rewriting url-rewrite-module

我想重写此URL:

https://example.com/super/index.php?route=doo/math&user_token=AxDJFKDLS73jfd

进入此URL:

https://example.com/super/math&user_token=AxDJFKDLS73jfd

甚至这个:

https://example.com/super/user_token=AxDJFKDLS73jfd

我通过修改/ super目录中的.htaccess并添加:

尝试了不同的方法
RewriteEngine On
RewriteRule ^super/$ index.php?route=doo/math [L]

也尝试过:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^route=doo/math([^&]+)&?(.*)$
RewriteRule ^/?$ /%1?%2 [R,L]

也可以直接在apache vhost中添加:

<IfModule mod_rewrite.c>
    RewriteCond %{QUERY_STRING} ^(.*)&route=([0-9]{10,12})(?:&)(.*)$
    RewriteRule ^(.*)$ https://%{SERVER_NAME}/super/$1?%1/%2\?%3 [NE,L,R]
</IfModule>

不幸的是,这些方法都不起作用,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这应该有效并且适用于https://example.com/super/user_token=AxDJFKDLS73jfd

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^super/user_token\=(.*)$ /index.php?route=doo/math&user_token=$1 [L]

编辑:

或者您甚至可以使用此

RewriteRule ^super/user_token\=([a-zA-Z0-9_-]+)$ /index.php?route=doo/math&user_token=$1 [L]

匹配您的火葬场。 A-Za-z0-9