Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 试图将所有子目录请求重定向到根目录,但它没有';我根本不工作_.htaccess_Redirect - Fatal编程技术网

.htaccess 试图将所有子目录请求重定向到根目录,但它没有';我根本不工作

.htaccess 试图将所有子目录请求重定向到根目录,但它没有';我根本不工作,.htaccess,redirect,.htaccess,Redirect,我想将所有/wordpress/请求重定向到根目录下的同一地址 例如: /wordpress/foo->/foo 我尝试了通过将其添加到.htaccess文件中找到的答案: <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^wordpress/.*$ / [R=302] </IfModule> 重新启动发动机 重写规则^wordpress/*$/[R=302] 但不用说,它只是将直接请求重定向到/wordp

我想将所有/wordpress/请求重定向到根目录下的同一地址

例如: /wordpress/foo->/foo

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

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

重新启动发动机
重写规则^wordpress/*$/[R=302]
但不用说,它只是将直接请求重定向到/wordpress/to/

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

我尝试了我发现的一切,但没有任何效果

网址是

无法正确重定向的示例地址是

(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>
重写选项继承
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
重新启动发动机
重写规则/wordpress/(*)/$1[PT]

以下内容可以做到这一点:

RewriteEngine On
RewriteRule "^wordpress/?(.*)" "/$1" [R=302]
更新:在“/”之后添加问号以启用重定向,即使没有子路径。

尝试以下操作:

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>
在这种情况下,重定向将透明,用户仍将在浏览器的地址行中看到旧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

它仍然只是重定向基本文件夹,而不是在地址中添加子文件夹时重定向。因此,基本上与之前相同的结果。使用上面的方法,Apache将/wordpress下的所有内容重定向到/,即/wordpress/blah转到/blah。这不是预期的行为吗?请注意,在.htaccess上下文中,要匹配的路径始终是相对的(即不以/)开头)。在另一个答案(我无法评论)中,示例以a/开头,这在.htaccess中不起作用。感谢您继续关注此问题,我非常感谢。是的,它几乎达到了我现在想要的。但是当/wordpress/转到/and/wordpress/blah/转到/blah时,当结构添加了斜杠,例如/wordpress/blah/foo时,它根本没有改变任何东西,它仍然转到/wordpress/blah/foo。我的意思是它只会更改basic/wordpress/和最多1个子文件夹。除此之外,它忽略了它。有办法解决这个问题吗?
R=301 - is for permanently moved URLs (user's browser will rememeber the new URL)
R=302 - is for temporarely moved URLs