apache 403 error on wordpress install

w8ntj3qf  于 2023-10-23  发布在  Apache
关注(0)|答案(2)|浏览(151)

我有一个网站,结构如下:

  1. /public_html
  2. /main site content (html content mostly)
  3. /.htaccess (1)
  4. /secret (dir)
  5. /wp (dir)
  6. /a wordpress install
  7. /.htaccess (2)

/secret/wp/是一个用于迁移到WordPress解决方案的开发站点。我在那里设计新网站。
当我尝试查看新网站时,root .htaccess导致403 Forbidden错误。我知道这一点,因为从服务器上删除它可以解决这个问题。
问题是,它正在为我做一些重要的文件扩展名重写,我需要或其他我的主要网站休息。

htaccess(1)

  1. <Files ~ "^\.(htaccess|htpasswd)$">
  2. deny from all
  3. </Files>
  4. DirectoryIndex index.html
  5. <IfModule mod_rewrite.c>
  6. RewriteEngine On
  7. RewriteRule ^(wp-admin)($|/) - [L] # You don't want to mess with WordPress
  8. RewriteRule ^/secret/wp/ - [L]
  9. RewriteCond %{REQUEST_FILENAME} !-d
  10. RewriteCond %{REQUEST_FILENAME}\.html -f
  11. RewriteRule .* $0.html
  12. # browser requests html
  13. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.html
  14. RewriteRule ^/?(.*)\.html$ /$1 [L,R=301]
  15. # check to see if the request is for a html file:
  16. RewriteCond %{REQUEST_FILENAME}\.html -f
  17. RewriteRule ^/?(.*)$ /$1.html [L]
  18. </IfModule>
  19. Redirect 301 /shop.html https://mydomain.myshopify.com/

添加行“RewriteRule ^/secret/wp/ - [L]”是寻找此问题的解决方案的结果,但它似乎没有做任何事情。
我的另一个.htaccess似乎根本没有触发。我会把它写得很清楚:

.htaccess(2)

  1. # BEGIN WordPress
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteBase /secret/wp/
  5. RewriteRule ^index\.php$ - [L]
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule . /secret/wp/index.php [L]
  9. # Fix 403 errors on existing directories; WordPress overrides.
  10. RewriteCond %{REQUEST_URI} ^/secret/wp/
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. RewriteRule . /index.php [L]
  13. </IfModule>
  14. # END WordPress

我不知道该怎么办。我不能只是删除.htaccess文件,否则整个网站中断,但我似乎无法找出如何停止403错误。我很确定这是因为重写规则,但它似乎并没有像它应该的那样停止目录。
任何帮助将不胜感激。

9rygscc1

9rygscc11#

我想你可以在你的.htaccess里试试这个

  1. RewriteCond %{REQUEST_FILENAME} -f [OR]
  2. RewriteCond %{REQUEST_FILENAME} -d
  3. RewriteRule ^ - [L]
  4. RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
  5. RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
  6. RewriteRule . index.php [L]
tyky79it

tyky79it2#

找到答案了。我花了一个星期的时间在我能找到的所有论坛上挖掘和测试,但最终(在删除整个wp安装并重新安装到一个干净的目录后),我找到了一个最简单的答案,解决了这一切:
我不得不编辑我的.htaccess文件,以允许“index.php”作为一个有效的默认索引页。
我的顶级域名的.htaccess文件只有这一行:目录索引index.html
我只是不得不将其更改为DirectoryIndex index.html index.php
然后一切都正常了

相关问题