2017-05-07 76 views
0

我在Apache的配置设置为允许mod_rewrite的:Apacher mod_rewrite - 如何让干净的URL与.html?

<Directory /var/www/> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    AllowOverride All 
</Directory> 

$ sudo a2enmod rewrite 
$ service apache2 restart 

但为什么我用的.html网址将无法正常工作?例如:

mysite.com/about.html 
mysite.com/contact.html 

,但它的工作原理:

mysite.com/about 
mysite.com/contact 

我怎么能有的.html工作,以及网址吗?

编辑:

这是的.htaccess(镆铘):

# For full documentation and other suggested options, please see 
# http://rtfm.modx.com/evolution/1.0/administration/friendly-url-solutions 
# including for unexpected logouts in multi-server/cloud environments 
# and especially for the first three commented out rules 

#php_flag register_globals Off 
AddDefaultCharset utf-8 
#php_value date.timezone Europe/Moscow 

#Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

# Fix Apache internal dummy connections from breaking [(site_url)] cache 
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC] 
RewriteRule .* - [F,L] 

# Rewrite domain.com -> www.domain.com -- used with SEO Strict URLs plugin 
#RewriteCond %{HTTP_HOST} !^$ 
#RewriteCond %{HTTP_HOST} !^www\. [NC] 
#RewriteCond %{HTTP_HOST} (.+)$ 
#RewriteRule ^(.*)$ http://www.%1/$1 [R=permanent,L] . 

# without www 
#RewriteCond %{HTTP_HOST} . 
#RewriteCond %{HTTP_HOST} !^example\.com [NC] 
#RewriteRule (.*) http://example.com/$1 [R=301,L] 

# without www all domains 
#RewriteCond %{HTTP_HOST} . 
#RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC] 
#RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

# Exclude /assets and /manager directories and images from rewrite rules 
RewriteRule ^(manager|assets)/.*$ - [L] 
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L] 

# For Friendly URLs 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

# Reduce server overhead by enabling output compression if supported. 
#php_flag zlib.output_compression On 
#php_value zlib.output_compression_level 5 

我看不出有任何的规则有说关于有html的...

+0

什么?你有一些'.htaccess'工作或有一些规则定义了一些地方,它是模糊的,因为你不需要mod_rewrite来显示在URL结尾的扩展名。 –

回答

1

第一件事将这两个相反的含义指令一个接一个没有任何意义:

AllowOverride None 
AllowOverride All 

你只需要后期,即:

AllowOverride All 

其次,支持扩展名的网址,你只需要启用MultiViews选项为:

Options Indexes FollowSymLinks MultiViews