.htaccess修改在本地工作,但不在生产上

时间:2013-10-11 16:33:56

标签: wordpress apache .htaccess mod-rewrite

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

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

mod_rewrite肯定有效,AllowOverride All已在生产中设置。还有什么可以让我们在生产中使用它?

对我而言,最奇怪的部分是OTHER RewriteCond DO工作,所以我真的很困惑为什么这一条新线在生产环境中应该表现得如此不同。

# 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文件所需的用户名/密码授权(我正在使用Chromes的REST扩展来手动添加必要的标头)请求成功。换句话说,它基本上是工作,但我们无法分辨,因为我们期望它提示用户名/密码,因为它在所有其他服务器上执行此操作。所以真正的问题是为什么授权提示(或缺少)会让我们在这台服务器上的Wordpress 404页面上登陆?

更新3

这是... / stamped

中的htaccess文件
 AuthType Basic
 AuthName "restricted area"
 AuthUserFile /home/username/public_html/.htpasswd
 require valid-user

.htpasswd文件的路径当然不同于开发和生产。

1 个答案:

答案 0 :(得分:0)

在具有DirectAdmin,PHP-FPM和FastCGI的Apache服务器上存在一个问题,表现为奇怪的.htaccess行为。我曾经花了一个晚上试图搞清楚:Only .php files loop with .htaccess redirect以上可能适用于你,也可能不适合你,但如果本地服务器上的一切都没问题,但生产服务器上没有,我会在那里寻找问题。