我为我的Wordpress网站准备了一个.htaccess文件,里面有这个内容。
# 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]
</IfModule>
# END WordPress我将此内容移动到我的站点的Apache虚拟主机中(如下所示),并删除了htaccess文件。
<VirtualHost *:80>
ServerName 68.183.153.223
DocumentRoot /home/david/wordpressWebSite
# 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]
</IfModule>
# END WordPress
</VirtualHost>但是,当我尝试重新启动Apache时,Apache输出了一个错误。
RewriteBase: only valid in per-directory config files
Action 'restart' failed.我认为htaccess文件内容可以移动到虚拟主机。什么是错误?
发布于 2012-05-31 23:17:46
根据docs的说法,RewriteBase“为每个目录的重写设置基URL”。
由于您没有设置每个目录的重写,因此该指令在特定目录的.htaccess文件之外是没有意义的。
发布于 2013-10-21 04:43:16
RewriteBase在虚拟主机文件中不起作用。
你可能想问的问题是:
如何在VHost RewriteRules中包含相对路径?
特别是,在vhosts中,*_FILENAME返回一个后跟REQUEST_URI的斜杠,而不是相对的或映射到文件系统!
例如,%{SCRIPT_FILENAME}
vhost文件中的需要:"assets/style.css"
:
有几种解决方案:
RewriteRule ^/foo/ /script.cgi
<Directory> tags<目录"/var/www/">上的RewriteEngine ...RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule (.*) /script.cgi
在directory标记中,*_FILENAME与htaccess文件中的处理方式相同。
当服务器有多个别名时,使用此别名可能会出现问题。
不是真正的答案。只需指出*_URI不需要重写,因为它们不应该映射到文件系统,因此vhost/htaccess路径是相同的。然而,使用REQUEST_URI并不总是可行的,David Faux在上面评论说它更慢。此外,thi
https://stackoverflow.com/questions/10836359
复制相似问题