2011-04-18 48 views
0

我创建简单的国防部重写简单的mod重写,没有重复的网址。有可能的?

# REMOVE WWW 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC] 
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L] 


# URL REWRITE 
RewriteEngine on 

RewriteRule ^design/?$ website-designing.php [L] 

一切工作正常。我的问题是目前这两个网址正在工作。如何防止这一点?

mydomain.com/website-designing.php (my original URL) 

mydomain.com/design/ (my SEO URL) 

我只想SEO URL,相同的概念应用于我所有的文件放在这个目录(该目录内150多个URL)的

这是可能的吗?

回答

0

对于每个RewriteRule ^design/?$ website-designing.php [L],您都可以禁止访问相应的资源。

RewriteRule website-designing.php - [F] 

也许

RewriteRule .*\.php - [F] 
0

我想你会遇到麻烦禁止人们进入到真正的PHP文件,由于客户端应该能够显示它。

如果您使用干净的URL,我认为搜索引擎找不到文件名,如果您不在代码中注册它们并禁止访问目录。

通过搜索引擎友好重写应该像这样:

RewriteRule ^design/$ /website-designing.php [L] 

(任何一个试图访问设计/热力四射/website-designing.php:没有重定向,所以你不会看到名称在地址栏中)。

我从未使用过nosubreq [NS]标志。据说它过滤了由模块生成的内部子请求。但不确定它是否适用于内部HTTP调用。 (既然你重写规则触发新的要求,所有的规则将被重新处理,所以你不能只是否认所有.php文件访问)

也许你可以试试:

RewriteRule ^.*\.php$ - [F,NS] 

但是,不要指望多这个的。

我会尝试一些技巧,看看是否有用。

编辑:

看来,我们可以做的东西:REDIRECT_URLREQUEST_URI看起来好像他们正在与rewritting保守。如:

RewriteCond %{REDIRECT_URL} \.php 
RewriteRule ^.*$ - [F] 

RewriteRule ^design/$ /website-designing.php [L] 

当您在地址栏中调用.php文件时,这应该禁止任何访问。