1

我们对 Wordpress 的 .htaccess 文件进行了一些修改,另一个应用程序在同一目录中运行(见下文)。如您所见,我们插入了一些 RewriteCond 来告诉 WP 重写忽略对我们其他应用程序控制器的特定请求。

我们刚刚添加了一条规则(在下面进行了评论),它在两个本地开发环境(一个 MAMP 另一个 XAMP)上完全符合预期。但是当我们将它推送到我们的生产服务器时,新规则似乎没有任何效果。我们无法导航到新目录 (/app/resumes/stamped/123.pdf) 中的文件,而是看到 Wordpress “这很尴尬” 消息,表明请求仍在通过 Wordpress 路由。

mod_rewrite 绝对有效,并且AllowOverride All已投入生产。我们还可以检查什么以使其在生产中工作?

对我来说,最奇怪的部分是 OTHER RewriteCondDO 工作,所以我真的很困惑为什么只有这一新行在生产环境中表现得如此不同。

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

###This is the new rule
RewriteCond %{REQUEST_URI} !/app/resumes/stamped/

RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/pages
RewriteCond %{REQUEST_URI} !^/tests
RewriteCond %{REQUEST_URI} !^/users
RewriteCond %{REQUEST_URI} !^/css/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_URI} !^/img/

RewriteRule . /index.php [L]
</IfModule>

# END WordPress

更新

这就是 /app 中的 .htaccess 中的内容

RewriteEngine on
RewriteBase /app/

#This is new too
RewriteCond %{REQUEST_URI} ^/resumes/stamped/

RewriteRule (.*) webroot/$1 [L]

更新 2 我们刚刚了解到 /stamped 目录的 .htaccess 文件所需的使用用户名/密码授权发送的请求(我使用 Chrome 的 REST 扩展手动添加必要的标头)确实成功。换句话说,它基本上可以工作,但我们无法判断,因为我们希望它提示输入用户名/密码,因为它在所有其他服务器上都这样做。所以真正的问题是,为什么授权提示(或缺少授权提示)会让我们进入该服务器上 Wordpress 的 404 页面?

更新 3

这是 .../stamped 中的 htaccess 文件

 AuthType Basic
 AuthName "restricted area"
 AuthUserFile /home/username/public_html/.htpasswd
 require valid-user

当然,.htpasswd 文件的路径从开发到生产是不同的。

4

1 回答 1

0

在具有 DirectAdmin、PHP-FPM 和 FastCGI 的 Apache 服务器上存在一个问题,表现为奇怪的 .htaccess 行为。我曾经花了一个晚上试图弄清楚:只有 .php 文件循环使用 .htaccess 重定向以上可能适用于您,也可能不适用于您,但如果在本地服务器上一切正常但在生产服务器上没有,我会寻找那里的问题。

于 2013-11-03T21:07:02.957 回答