0

我想将所有 /wordpress/ 请求重定向到 root 的相同地址。

例如:/wordpress/foo -> /foo

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

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

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

例如,对 /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/

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

完整的 .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>
4

2 回答 2

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
于 2012-10-09T12:17:06.873 回答
0

以下应该这样做:

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

更新:在“/​​”之后添加问号以启用重定向,即使没有子路径。

于 2012-10-09T12:11:47.147 回答