【问题标题】:Redirecting using Rewriterule from .htaccess使用来自 .htaccess 的 Rewriterule 进行重定向
【发布时间】:2014-02-25 08:38:08
【问题描述】:

我有一个域(比如说 www.example.com),并希望它指向我服务器的 /Example_folder/(在 /var/www/ 内)。

所以,如果我尝试转到 www.example.com/images/test.html 或 example.com/images/test.html,它实际上应该指向 /Example_folder/images/test.html。

我尝试使用以下代码使其正常工作,但我无法弄清楚。

试验#1:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [NC]
Rewriterule ^(.*) /Example_Folder/ [L]

如果我使用上面的代码,我会得到 ERR_TOO_MANY_REDIRECTS。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [NC]
Rewriterule ^(.*) /Example_Folder/index.html [L]

如果我使用上面的代码(其中指定了 index.html),它会重定向,但我无法让我的域指向它的子目录。 (www.example.com/images/test.html 也会指向 www.example.com/index.html)

我使用下面链接中的代码让它工作: htaccess Silent Redirect to Subdirectory: Subdirectory showing when no trailing '/'

剩下的最后一件事是,当我指向 www.example.com/Example_Folder 时,我希望地址栏显示 www.example.com,但我还没有弄清楚。

【问题讨论】:

    标签: .htaccess url mod-rewrite redirect rewrite


    【解决方案1】:

    您可以使用这个基于负前瞻的规则来避免重写循环:

    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC]
    Rewriterule ^((?!Example_Folder/).+)$ /Example_Folder/$1 [L,NC]
    

    这意味着仅当 URI 尚未以 Example_Folder/ 开头时才重写。

    【讨论】:

    • 其实我还是有问题。现在有了负前瞻,我没有得到重写循环,但是当我尝试指向子目录(例如:www.example.com/images)时,地址栏变为 www.example.com/Example_Folder/images。无论如何我可以从地址栏中隐藏“Example_Folder”吗?
    • 奇怪的是,如果我指向子目录中的文件(例如:www.example.com/images/index.html),它可以正常工作,但如果我指向它只是子目录,地址栏包括“Example_Folder”
    • 嗯,很奇怪,因为上面的规则没有做任何重定向。尝试将 DirectorySlash Off 放在 .htaccess 的顶部
    • DirectorySlash off 可以将“Example_Folder”隐藏在地址栏上,但新问题是由于 directoryslash off,我只能使用 www.example.com/images/ 访问子目录,而不能www.example.com/images
    • 另外一件事是,当我输入 www.example.com/Example_Folder 时,我实际上可以访问它(它指向 Example_Folder)。我不应该得到 Forbidden 因为它应该指向 www.example.com/Example_Folder/Example_Folder?
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多