将查询字符串URL转换为Path

时间:2016-02-13 11:47:17

标签: .htaccess mod-rewrite url-rewriting

我正在尝试更改http://www.mywebsite.com/en/admin/index?page=archived

http://www.mywebsite.com/en/admin/page/archived/

我尝试过很多东西,包括:

RewriteCond %{QUERY_STRING} ^page=(.+)$    
RewriteRule ^(.*)$ http://%{HTTP_HOST}/en/admin/%1? [R=301,L]

但我总是有404错误。

我的.htaccess进入admin directory

.htaccess:

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://%{HTTP_HOST}/en/admin/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://%{HTTP_HOST}/en/admin/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]   

RewriteCond %{THE_REQUEST} /index\?page=(.+?) [NC]
RewriteRule ^index$ /en/admin/page/%1? [NC,L,R]
RewriteRule ^page/([^/.]+)/?$ /en/admin/index?page=$1 [NC,L]

1 个答案:

答案 0 :(得分:1)

您可以在admin / .htaccess中使用以下代码:

RewriteEngine On
RewriteCond %{THE_REQUEST} /index\?page=([^\s]+) [NC]
RewriteRule ^ /en/admin/page/%1? [NC,L,R]
RewriteRule ^page/([^/.]+)/?$ /en/admin/index?page=$1 [NC,L]