在子域上设置Apache HTAccess重写规则
我正在为我的测试服务器使用子域URL。比如: 我的.htaccess文件中包含以下内容:在子域上设置Apache HTAccess重写规则,apache,.htaccess,url-rewriting,rewrite,Apache,.htaccess,Url Rewriting,Rewrite,我正在为我的测试服务器使用子域URL。比如: 我的.htaccess文件中包含以下内容: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 RewriteRule ^about/(.*)$ /about.php?request=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1
RewriteRule ^about/(.*)$ /about.php?request=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
上述方法在URL的生产(非子域)集上运行良好。但它并没有在我的开发盒上占一席之地。例如,如果我输入
http://dev.mysite.com/about
我得到一个404错误。但是下面附加的.php扩展可以工作
http://dev.mysite.com/about.php
我猜这与处理www子域的第一个重写条件有关。如何修改.htaccess文件以说明dev子域?您至少需要
AllowOverride All
或AllowOverride FileInfo
才能使htaccess文件在服务器/vhost配置中工作。FileInfo是用于mod_rewrite之类的东西
此外,请确保已加载mod_rewrite
您还需要更改此条件:
RewriteCond %{REQUEST_FILENAME}.php -f
致:
因为mod_rewrite将识别出
/about
有一个php文件,并使它通过-f
测试,从而导致/about/something.php
您的.htaccess似乎未启用
将相同的垃圾文本放在.htaccess
的顶部,验证您的.htaccess
是否已启用,并查看是否生成500(内部服务器)错误
要启用.htaccess
您的httpd.conf
文件需要以下行:
AllowOverride All
通过将相同的垃圾文本放在
.htaccess
上,验证您的.htaccess
是否已启用,并查看它是否生成500(内部服务器)错误?@anubhava在文件顶部添加额外文本后没有错误,这意味着您的Apache配置尚未启用。htaccess@anubhava谢谢我忘了编辑dev框上的httpd.conf文件。很高兴知道你的问题已经解决了,你可以把这个写下来作为回答。我在下面添加了这些评论作为回答,以帮助未来的访问者。
AllowOverride All