Wordpress目录冲突:需要有关htaccess路径的建议

时间:2015-04-09 14:49:25

标签: wordpress apache .htaccess mod-rewrite

我正在将网站移动到Wordpress,并使用Multiblog功能。我无论如何都不是htaccess专家,但我确实设法定期使用它。所以我在这里寻求一些专家建议。

该网站www.blather.ie将使用与旧网站相同的子博客路径。我需要保留旧文件夹 - 比如www.blather.ie/zeitgeist和一些旧内容,同时将Wordpress博客发布到同一路径。我意识到,当我尝试这样时会发生403错误。所以我找到了workaround herehere

如我现有文件的那些页面中所述,在我的htaccess中添加行无效。当我清除htaccess文件并从头开始时,我不再收到403错误 - 内容出现,但没有任何主题/样式表。我查看了源代码,看到它试图从www.blather.ie/zeitgeist/wp-content中提取信息......这是不存在的 - 它需要从www.blather.ie/wp-获取它内容/...

此外,此'修复'也开始在管理员后端创建循环。不知道为什么。

所以,这是我原来的htaccess文件:

# BEGIN WordPress

Options +FollowSymLinks
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
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).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>

# END WordPress

这是与目录冲突问题的建议修复相同的htaccess,但仍然导致403错误。

# BEGIN WordPress

Options +FollowSymLinks
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

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

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

# Fix 403 errors on existing directories; WordPress overrides.
RewriteCond %{REQUEST_URI} ^/(zeitgeist)/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . /index.php [L]


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

# END WordPress

这是从第一个推荐的网站上获得的“干净”htaccess - 它治愈403,但是打破路径,指向错误的样式表位置并导致后端重定向循环和403s:

# 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]
# Fix 403 errors on existing directories; WordPress overrides.
RewriteCond %{REQUEST_URI} ^/(zeitgeist)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

所以 - 我的问题 - 路径出错了,导致这些该死的反馈循环?

提前致谢!

1 个答案:

答案 0 :(得分:0)

试试这个?使用基本的WP .htaccess,根本没有想象,而是在每个遗留文件夹中删除一个微小的.htaccess(这些是正确的吗?),禁用文件夹中的重写。

此方法对我有用,因为我还需要提供对旧文件夹的访问权限。对于环境,您可能需要选择一些随意变化的选项。有几种方法可以执行此操作,例如禁用重写,允许dir访问,显示详细信息等,以便我在此时不能为您提供一个代码段。