我想将我的RootDocument目录重写为自己的地址。
例如,我希望能够访问:reinterpret_cast
并重定向到http://localhost/FOO
。请注意,URL域是静态的,所有子目录域都具有相同的tol级域。我需要在代码块中创建重定向:
http://FOO.dev
因为我已经想出了如何进入我需要的目录,我将如何使用我的逻辑来提取并将我重定向到正确的位置?
答案 0 :(得分:1)
您需要采用两步方法,因为您必须在要设置的方案中处理两个单独的请求:
这是将客户端重定向到新主机名的规则:
RewriteEngine on
RewriteRule ^/?(\w+)(/?.*)$ http://$1.dev$2 [R=301]
这是该主机内部将规则重新映射到文件系统内部文件夹的规则:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(\w+)\.dev$
RewriteCond /%1 -d
RewriteRule ^/?(.*)$ /%1/$1 [END]
显然,需要为此加载和启用重写。
如果您收到第一个请求(要重定向的请求)的http状态500(“内部服务器错误”),则可能是您使用的是非常旧版本的apache http服务器。在这种情况下,请尝试将[END]
标记替换为[L]
标记...
以上规则同样适用于http服务器主机配置或动态配置文件。但是,您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess
样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。