我的htaccess文件只包含几行,首先删除www然后将“.php”添加到slug中以获取正确的php文件,所以
www.kalicup.fr/seo
应重写为
kalicup.fr/seo
然后显示文件seo.php(网址本身没有显示.php扩展名)
目前
kalicup.fr/seo
正确显示seo.php而不显示文件扩展名。 但是,当我尝试
时www.kalicup.fr/seo
重写为
kalicup.fr/seo.php
在网址
中添加.php扩展名所以我的htaccess中显然存在问题,但我看不到它! 这是我的代码
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
ErrorDocument 404 /404.php
# redirect the url with www to url without
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?kalicup\.fr)$ [NC]
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?kalicup\.co\.uk)$ [NC]
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
# add .php to urls
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
任何人都可以看到问题吗?
答案 0 :(得分:1)
在.htaccess
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
ErrorDocument 404 /404.php
# redirect the url with www to url without
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?kalicup\.(?:fr|co\.uk))$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
# add .php to urls
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
只有一个.fr和.co.uk的测试。
和-MultiViews:http://httpd.apache.org/docs/2.2/en/mod/core.html#options
MultiViews的效果如下:如果服务器收到/ some / dir / foo的请求,如果/ some / dir启用了MultiViews,并且/ some / dir / foo不存在,那么服务器会读取目录查找名为foo。*的文件,并有效地伪造一个命名所有这些文件的类型映射,为它们分配相同的媒体类型和内容编码,如果客户端通过名称请求其中一个文件。然后,它会根据客户的要求选择最佳匹配。 http://httpd.apache.org/docs/2.2/en/content-negotiation.html