首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的mod重写,没有重复的网址。有可能吗?

问简单的mod重写,没有重复的网址。有可能吗?
EN

Stack Overflow用户
提问于 2011-04-18 15:57:39
回答 2查看 143关注 0票数 0

我已经创建了简单的mod重写

代码语言:javascript
复制
# 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都在工作。如何防止这种情况发生?

代码语言:javascript
复制
mydomain.com/website-designing.php (my original URL)

mydomain.com/design/ (my SEO URL)

我只想搜索引擎优化网址,同样的概念适用于我的所有文件在这个目录(超过150个网址在这个目录内)

有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2011-04-18 16:58:58

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

代码语言:javascript
复制
RewriteRule website-designing.php - [F]

或者也许

代码语言:javascript
复制
RewriteRule .*\.php - [F]
票数 0
EN

Stack Overflow用户

发布于 2011-04-18 17:40:51

我认为您在禁止访问真正的.php文件时会遇到麻烦,因为客户端应该能够显示它。

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

顺便说一句,你对搜索引擎友好的重写应该是这样的:

代码语言:javascript
复制
RewriteRule ^design/$ /website-designing.php [L]

(任何试图访问design/ got served /website-design ing.php的用户:无重定向,因此您不会在地址栏中看到该名称)。

我从未使用过nosubreq [NS]标志。据说它会过滤模块生成的内部子请求。但不确定它是否适用于内部HTTP调用。(由于您重写规则触发了一个新请求,所有规则都将被重新处理,因此您不能拒绝访问所有.php文件)

也许你可以试试:

代码语言:javascript
复制
RewriteRule ^.*\.php$ - [F,NS]

但不要期望太多这样的事情。

我将尝试一些技巧,看看是否有效。

编辑:

看起来我们可以用:REDIRECT_URL或REQUEST_URI来做一些事情,看起来它们似乎是通过重写来保守的。像这样:

代码语言:javascript
复制
RewriteCond %{REDIRECT_URL} \.php
RewriteRule ^.*$ - [F]

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5700031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档