.htaccess需要修订的语法代码

时间:2013-03-31 23:25:56

标签: xcode linux .htaccess seo

1)我正在尝试301所有非www到www(包括文件)

例如 /subdirectory/ + /subdirectory/1.jpg(所有可能与www。)


2)我试图排除ONLY但是所有的.html和.php文件都不显示,并且只希望将非跟踪版本编入索引,其余的将是301到我的域名

例如 /example.html或.php>> / example

例如 /example.html或.php>>不工作+没有索引

例如 /示例仅适用于工作且仅被编入索引(以避免重复内容)


3)我正在尝试301所有死链接和404到我的域

例如 / deadlink或/deadlink.pdf>> 301我的域名,example.com


这是我目前的代码,但我不确定它是否100%正确。 有人可以回复这3个任务的验证语法吗?谢谢。


Options +FollowSymLinks 

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

RewriteEngine on  

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{REQUEST_FILENAME}\.php -f 

RewriteRule ^(.*)$ $1.php

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{REQUEST_FILENAME}\.html -f 

RewriteRule ^(.*)$ $1.html

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule . / [L,R=301]

1 个答案:

答案 0 :(得分:4)

好的,你在这里尝试了三个部分,我将分别解决这些问题。

在开始之前,您只需要一个

RewriteEngine on

只需要打开一次。

您还应该设置:

Options -MultiViews

因为MultiViews可能会在这里引起一些奇怪的问题。

重定向到WWW

您当前的规则应该有效,但您可以使用!=上的RewriteCond前缀稍微简化一下:

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

删除.php.html后缀

这里需要两组不同的规则:一组用于从URL中删除后缀,另一组用于在内部读取它们。

让我们先做下半场,因为这更容易:

RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [L]

RewriteCond %{SCRIPT_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

有了这个,删除后缀有点棘手,没有与前面的规则发生冲突并试图重新使用它们。我能想出的最佳方法是:

RewriteCond %{THE_REQUEST} \.(html|php)
RewriteRule ^(.*)\.(html|php)$ $1 [R=301,L,NC]

但我愿意接受建议。

301所有死链接

不要那样做。如果链接不存在,则应返回404状态的页面。如果您想通过死链接将访客重定向到您的主页,请在您的404页面中添加一个链接。