从httpd.conf开始工作时,htaccess规则不起作用

时间:2014-07-01 19:50:59

标签: linux apache .htaccess

我正在尝试将一些规则设置到我的Web根目录中。 在/ var / www / html等/ 在这个目录里面,我在.htaccess文件中设置了一些规则。 此文件由ftp上传。 文件权限如下。

  

-rw-r - r-- 1 apache apache 363 Jun 17 15:27 /var/www/html/.htaccess

文件包含规则。

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|captcha|images|upload_image|thumbnail1|users_images|profile_pic|js|css|fonts|font-awesome|css_admin|font_admin|font_awesome_admin|images_admin|js_admin|facebook|twitter|google|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]

但是当我在httpd.conf中设置相同的规则时,规则才能正常工作。

在httpd.conf

<Directory /var/www/html>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|captcha|images|upload_image|thumbnail1|users_images|profile_pic|js|css|fonts|font-awesome|css_admin|font_admin|font_awesome_admin|images_admin|js_admin|facebook|twitter|google|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>
</Directory>

我无法解决htaccess文件的问题。 请在这里帮助我。

2 个答案:

答案 0 :(得分:0)

htaccess不同,在httpd.conf中,规则需要包含前导/

例如,

RewriteRule ^/(.*)$ /index.php?$1 [L]

答案 1 :(得分:0)

我得到了它做错了。在httpd.conf

<Directory "/var/www/html">
Options Indexes FollowSymLinks
 AllowOverride All 
Order allow,deny
Allow from all
</Directory>

有 AllowOverride无 只是用AllowOverride All替换它。

谢谢大家的帮助。