繁体   English   中英

在子域上设置Apache HTAccess重写规则

[英]Setting Apache HTAccess Rewrite Rules on a Subdomain

我正在为测试服务器使用子域URL。 就像是:

http://dev.mysite.com

我的.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 %{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子域?

看来您的.htaccess没有启用。

验证是否 .htaccess启用与否,通过把相同的垃圾文字在你之上.htaccess ,看看它是否产生500(内部服务器)错误或不?

要启用 .htaccess您的httpd.conf文件将需要以下行:

AllowOverride All

您至少需要AllowOverride AllAllowOverride FileInfo才能使htaccess文件在服务器/ vhost配置中起作用。 FileInfo用于mod_rewrite之类的东西。

此外,请确保已加载mod_rewrite。

您还需要更改此条件:

RewriteCond %{REQUEST_FILENAME}.php -f

至:

RewriteCond %{DOCUMENT_ROOT}/$1.php -f

因为mod_rewrite将识别about拥有一个php文件,并使其/about/something通过-f测试,从而生成/about/something.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM