添加自定义URL后,.htaccess文件无法正常工作

时间:2014-06-23 13:31:03

标签: php apache .htaccess

我正在尝试更新我的.htaccess文件,以便让我看到更好的url(没有.php的文件扩展名)。该文件已经有重定向,因为我有两个域名。

以下是原始代码:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^darrenmorton\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.darrenmorton\.com$
RewriteRule ^/?$ "http\:\/\/darrenmorton\.co\.uk\/" [R=301,L]

这是我更新的代码无效

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^darrenmorton\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.darrenmorton\.com$
RewriteRule ^/?$ "http\:\/\/darrenmorton\.co\.uk\/" [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
Not 
RewriteCond %{REQUEST_FILENAME} \.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteRule ^contact-darren-morton.php$ contact-darren-morton.php [L]

由于我是.htaccess文件的新手,不确定是什么问题!

2 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?darrenmorton\.com$ [NC]
RewriteRule ^ http://darrenmorton.co.uk}%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

答案 1 :(得分:1)

您正在使用该声明重定向所有内容:

RewriteRule ^/?$ "http\:\/\/darrenmorton\.co\.uk\/" [R=301,L]

之后什么都不会有效,因为如果它匹配(并且它始终匹配),它是最后一个要检查的规则。由[L]定义。

所以至少你需要改变规则的顺序。如果您希望规则仅适用于您的.co.uk域名,您也有其他选择。