Htaccess 301重定向动态网址

时间:2013-08-26 18:44:38

标签: php regex apache .htaccess mod-rewrite

我需要将带有参数的动态网址重定向到子文件夹网址。 源URL的长度/级别可能不同。

一个例子是:

来源:

http://www.example.com/dir/?lang=en

所需

http://www.example.com/dir/en

另一个是:

来源:

http://www.example.com/dir/subdir/?lang=en

所需

http://www.example.com/dir/subdir/en

我正在使用WordPress,因此我的.htaccess中存在一些现有代码,需要使用相关重定向。我现有的.htaccess看起来像这样:

RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] 
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

我尝试搜索整个网络,然而,没有解决方案/答案似乎适合这种特殊情况。 有谁可以提供帮助?

1 个答案:

答案 0 :(得分:1)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} !^lang=.+ [NC]
RewriteRule ^(.+?)/([^/]+)/?$ $1/?lang=$2 [L,QSA]