我已经创建了简单的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]一切都很正常。我的问题是,目前两个URL都在工作。如何防止这种情况发生?
mydomain.com/website-designing.php (my original URL)
mydomain.com/design/ (my SEO URL)我只想搜索引擎优化网址,同样的概念适用于我的所有文件在这个目录(超过150个网址在这个目录内)
有可能吗?
发布于 2011-04-18 16:58:58
对于每个RewriteRule ^design/?$ website-designing.php [L],您可以禁止访问相应的资源。
RewriteRule website-designing.php - [F]或者也许
RewriteRule .*\.php - [F]发布于 2011-04-18 17:40:51
我认为您在禁止访问真正的.php文件时会遇到麻烦,因为客户端应该能够显示它。
如果你使用干净的URL,我认为如果你不在你的代码中注册它们并禁止访问目录,搜索引擎就无法找到文件名。
顺便说一句,你对搜索引擎友好的重写应该是这样的:
RewriteRule ^design/$ /website-designing.php [L](任何试图访问design/ got served /website-design ing.php的用户:无重定向,因此您不会在地址栏中看到该名称)。
我从未使用过nosubreq [NS]标志。据说它会过滤模块生成的内部子请求。但不确定它是否适用于内部HTTP调用。(由于您重写规则触发了一个新请求,所有规则都将被重新处理,因此您不能拒绝访问所有.php文件)
也许你可以试试:
RewriteRule ^.*\.php$ - [F,NS]但不要期望太多这样的事情。
我将尝试一些技巧,看看是否有效。
编辑:
看起来我们可以用:REDIRECT_URL或REQUEST_URI来做一些事情,看起来它们似乎是通过重写来保守的。像这样:
RewriteCond %{REDIRECT_URL} \.php
RewriteRule ^.*$ - [F]
RewriteRule ^design/$ /website-designing.php [L]当您在地址栏中调用.php文件时,这将禁止任何访问。
https://stackoverflow.com/questions/5700031
复制相似问题