我有一个网站说 www.abcd.com 。如果我使用网址 http://abcd.com 访问它,它的工作正常。但我想要的是,如果用户使用网址 http://abcd.com ,那么网络服务器应该能够将其转换为网址 www.abcd.com 。
%LOCATION_CONTAINS_HTACCESS_FILE%=某些路径
httpd.config中的一些重要更改是:
1. DocumentRoot "/var/www/html"
2. <Directory />
Options FollowSymLinks
AllowOverride All #changed to All
</Directory>
3. <Directory "%LOCATION_CONTAINS_HTACCESS_FILE%">
AllowOverride All
</Directory>
4. AccessFileName .htaccess #default
5. %LOCATION_CONTAINS_HTACCESS_FILE%/.htaccess # I added
6. <Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
我的 .htaccess
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
在执行“ service httpd restart ”时,我在第5行(从上面看,我认为)收到错误:
Starting httpd: Syntax error on line 415 of /etc/httpd/conf/httpd.conf:
Invalid command '%LOCATION_CONTAINS_HTACCESS_FILE%/.htaccess', perhaps misspelled or defined by a module not included in the server configuration
我浏览了网络上的大多数链接,但无法获得任何特定的解决方案。
我对Web服务知之甚少。但等待更简单的解决方案。
希望你们面对这个问题&amp;一定解决了
答案 0 :(得分:1)
我总是使用下面的代码段:
RewriteEngine On
RewriteBase /
# Redirect non-canonical domains
RewriteCond %{HTTP_HOST} !^www.yourdomain.com$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
# Redirect non-www to www version
RewriteRule %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+\.[a-z]{2,6})$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
它做了两件事:
注意:NC标志告诉apache检查忽略大小写。
- 编辑:
我将订单指令更改为:
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
这将拒绝访问所有隐藏文件(例如,您的php .user.ini文件,如果存在),而不仅仅是.htaccess / .htpasswd文件等。