REQUEST_FILENAME 问题,停止运行 php 升级
REQUEST_FILENAME issues, stopped functioning with php upgrade
所以我有一个 request_filename 规则突然停止工作了。我最近将服务器升级到了 Jessie,php 也随之升级。
但是,这是我目前的重写规则。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.URL\.com$
RewriteRule ^/?$ "http\:\/\/URL\.com\/" [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.URL.com/ [R=301,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ .html
RewriteRule ^(.*)/$ [NC,L]
.htaccess 文件归 www-data 所有,可以访问。
我好像在错误日志中看到了这个
[Thu Jun 04 19:43:21.641790 2015] [authz_core:debug] [pid 15423] mod_authz_core.c(809): [client 213.138.113.36:65331] AH01626: authorization result of Require all granted: granted, referer: http://www.URL.com/
[Thu Jun 04 19:43:21.641883 2015] [authz_core:debug] [pid 15423] mod_authz_core.c(809): [client 213.138.113.36:65331] AH01626: authorization result of <RequireAny>: granted, referer: http://www.URL.com/
[Thu Jun 04 19:43:21.642056 2015] [core:info] [pid 15423] [client 213.138.113.36:65331] AH00128: File does not exist: /var/www/URL/about, referer: http://www.URL.com/
可能是我没有加载到我的虚拟主机配置文件中?
<VirtualHost *:80>
ServerAdmin EMAIL@hotmail.com
ServerName URL.com
ServerAlias www.URL.com
ServerAlias *.URL.com
SetEnv APPLICATION_ENV dev
DocumentRoot /var/www/URL
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/URL.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/URL.access.log combined
</VirtualHost>
这是我接手托管的网站,我通常不使用 .htaccess 文件。如有任何建议,我们将不胜感激。
我遇到的问题是页面尝试加载为 www.url.com/about 由于文件为 about.html.
而失败
问题是我的主要 apache2.conf 文件。
AllowOveride 已禁用。
我做了以下更改
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
我看到这里发生了一些事情。我没有看到实际文档根目录的目录指令。然后不会使用 .htaccess 文件,因为没有为您的文档根目录指定 AllowOverride All
。此外,您不应在 2.4 中使用 2.2 指令。将您的 Vhost 文件更改为如下所示。我稍微修改了它并为您的根目录添加了目录指令。
<VirtualHost *:80>
ServerAdmin EMAIL@hotmail.com
ServerName URL.com
ServerAlias *.URL.com
SetEnv APPLICATION_ENV dev
DocumentRoot /var/www/URL
<Directory "/var/www/URL">
Options -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/URL.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/URL.access.log combined
</VirtualHost>
所以我有一个 request_filename 规则突然停止工作了。我最近将服务器升级到了 Jessie,php 也随之升级。
但是,这是我目前的重写规则。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.URL\.com$
RewriteRule ^/?$ "http\:\/\/URL\.com\/" [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.URL.com/ [R=301,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ .html
RewriteRule ^(.*)/$ [NC,L]
.htaccess 文件归 www-data 所有,可以访问。
我好像在错误日志中看到了这个
[Thu Jun 04 19:43:21.641790 2015] [authz_core:debug] [pid 15423] mod_authz_core.c(809): [client 213.138.113.36:65331] AH01626: authorization result of Require all granted: granted, referer: http://www.URL.com/
[Thu Jun 04 19:43:21.641883 2015] [authz_core:debug] [pid 15423] mod_authz_core.c(809): [client 213.138.113.36:65331] AH01626: authorization result of <RequireAny>: granted, referer: http://www.URL.com/
[Thu Jun 04 19:43:21.642056 2015] [core:info] [pid 15423] [client 213.138.113.36:65331] AH00128: File does not exist: /var/www/URL/about, referer: http://www.URL.com/
可能是我没有加载到我的虚拟主机配置文件中?
<VirtualHost *:80>
ServerAdmin EMAIL@hotmail.com
ServerName URL.com
ServerAlias www.URL.com
ServerAlias *.URL.com
SetEnv APPLICATION_ENV dev
DocumentRoot /var/www/URL
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/URL.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/URL.access.log combined
</VirtualHost>
这是我接手托管的网站,我通常不使用 .htaccess 文件。如有任何建议,我们将不胜感激。
我遇到的问题是页面尝试加载为 www.url.com/about 由于文件为 about.html.
而失败问题是我的主要 apache2.conf 文件。
AllowOveride 已禁用。
我做了以下更改
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
我看到这里发生了一些事情。我没有看到实际文档根目录的目录指令。然后不会使用 .htaccess 文件,因为没有为您的文档根目录指定 AllowOverride All
。此外,您不应在 2.4 中使用 2.2 指令。将您的 Vhost 文件更改为如下所示。我稍微修改了它并为您的根目录添加了目录指令。
<VirtualHost *:80>
ServerAdmin EMAIL@hotmail.com
ServerName URL.com
ServerAlias *.URL.com
SetEnv APPLICATION_ENV dev
DocumentRoot /var/www/URL
<Directory "/var/www/URL">
Options -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/URL.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/URL.access.log combined
</VirtualHost>