0

我在 linux 上运行 Apache2 网络服务器 我的域是 peku33.net 在 apache 配置中,我将 DomainAlias 设置为 *.peku33.net

在我的 public_html 目录中,我有:

SomeSite.php
SomeOtherSite.php
SomeotherSiteEtc.php

我想重定向

SomeSite.php -> peku33.net/SomeOTHERText/
SomeOtherSite.php -> mysite.peku33.net/SomethingElse/
SomeotherSiteEtc.php -> mysubdomain.peku33.net/Blablabla/Blabla/

我还想禁用对这些文件的直接访问(调用http://peku33.net/SomeSite.php将返回具有适当位置的 304 或 301 代码:)

感谢您的重播!

4

2 回答 2

1

很简单,只需在站点的文档根目录中的.htaccess文件中添加以下内容即可(效率不高,因为 Apache 会在每次请求时读取和解析文件,还假设目录Includes已被允许在httpd.conf为您的站点文档根目录),或者最好在Apache 的httpd.conf中的Virtualhost定义中,或相关的包含.conf

RewriteEngine On

RewriteCond %{HTTP_HOST)          ^peku33\.net$        [NC]
RewriteRule ^/?SomeOTHERText/     SomeSite.php         [L]

RewriteCond %{HTTP_HOST)          ^mysite              [NC]
RewriteRule ^/?SomethingElse/     SomeOtherSite.php    [L]

RewriteCond %{HTTP_HOST)          ^mysubdomaint        [NC]
RewriteRule ^/?Blablabla/Blabla/  SomeotherSiteEtc.php [L]

#Attempt to block direct requests to a .php script, only internally rewritten requests should get through 
RewriteCond %{THE_REQUEST}        SomeSite\.php        [NC]
RewriteRule ^/?SomeSite.php       -                    [F,NC]

笔记:

F   = Fail   (Could use G=Gone or R=### instead)
NC  = Not Case-sensitive
L   = Last
^/? = optional leading slash, best to leave in place, as the leading slash is stripped from the URI, when the rule is .htaccess based.

如果您不清楚上述规则的作用,或者如果您想要更抽象的东西,请考虑以下Apache mod_rewrite文档

于 2012-11-14T00:42:49.677 回答
0

http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect

Redirect /SomeSite.php http://peku33.net/SomeOTHERText/

您可以分别为 301、302 和 303 重定向添加permanenttemp和。seeother

于 2012-11-05T20:49:56.287 回答