尝试将所有子目录请求重定向到root,但它根本不起作用

时间:2012-10-09 12:07:23

标签: .htaccess redirect

我想将所有/ wordpress / requests重定向到root的同一地址。

例如: / wordpress / foo - > /富

我通过将其添加到.htaccess文件中尝试了这个答案:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wordpress/.*$ / [R=302]
</IfModule>

但不用说,它只是将直接请求重定向到/ wordpress /到/.

e.g。对/ wordpress / foo /的请求仍将被视为/ wordpress / foo /.

我尝试了所有我发现的但没有任何作用。

网站地址为http://www.ist118.com/

未正确重定向的示例地址为http://www.ist118.com/wordpress/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%AE%D8%B1%DB%8C%D8%AF-%D8%A7%D8%B2-%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%A8%D9%88%D9%84/%D9%82%DB%8C%D9%85%D8%AA-%D8%AE%D9%88%D8%B1%D8%A7%DA%A9%DB%8C-%D9%87%D8%A7-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%A8%D9%88%D9%84/

(url由于utf8阿拉伯字符而被编码)

完成.htaccess内容:

RewriteOptions inherit

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /wordpress/(.*) /$1 [PT]
</IfModule>

2 个答案:

答案 0 :(得分:1)

试试这个:

RewriteRule /wordpress/(.*) /$1 [PT]

<强>已更新

我认为你的.htaccess应该是这样的:

RewriteOptions inherit

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule /wordpress/(.*) /$1 [PT]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<强>已更新

仅供参考。

如果您只需要透明重定向,则应使用

RewriteRule /wordpress/(.*) /$1 [PT]

在这种情况下,重定向将透明,用户仍将在浏览器的地址行中看到旧的URL

但是如果您希望用户知道URL已更改,则应使用

RewriteRule /wordpress/(.*) /$1 [R=301]

在这种情况下,URL也会在浏览器的地址行中更改

还有一个:

R=301 - is for permanently moved URLs (user's browser will rememeber the new URL)
R=302 - is for temporarely moved URLs

答案 1 :(得分:0)

以下应该这样做:

RewriteEngine On
RewriteRule "^wordpress/?(.*)" "/$1" [R=302]

更新:在'/'后添加问号,即使没有子路径也能启用重定向。