【问题标题】:Htaccess 301 redirect with dynamic URLsHtaccess 301 使用动态 URL 重定向
【发布时间】:2013-08-29 08:09:54
【问题描述】:

我需要将带有参数的动态 URL 重定向到子文件夹 URL。 源 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]

我尝试搜索整个网络,但似乎没有适合这种特殊情况的解决方案/答案。 有没有高手可以帮忙?

【问题讨论】:

  • 这个问题是否像@anubhava 建议的那样混合代码解决了?如果不是,我相信您应该快速检查一下 htaccess 重写命令 herehere,如果您自己实现了解决方案,您可以发布自己的答案,但如果没有,请在此处通过评论告诉我们。

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_ROOT目录下:

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

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

【讨论】:

  • 感谢您的回复。但是,我想不出来。我的 .htaccess 文件中有以下代码(来自 wordpress)。 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] 你的建议和这个一起工作吗?如果是这样,怎么办?非常感谢。
  • 谁能回答?
  • 你需要先解释你手头的问题。就像我建议的答案是否有效?如果没有,那么什么不起作用。最后,您不应在 cmets 中提供代码 cmets。编辑您的问题并在那里复制/粘贴您的 .htaccess。
猜你喜欢
  • 1970-01-01
  • 2015-12-04
  • 2011-07-25
  • 1970-01-01
  • 2021-04-01
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
相关资源
最近更新 更多