【问题标题】:problems getting mod_rewrite working让 mod_rewrite 工作的问题
【发布时间】:2013-12-07 23:18:28
【问题描述】:

我在 mod_rewrite 方面做得不多,但我似乎对此无能为力。我想知道我的服务器上是否未启用它(即使我的主机说它是)。

我有以下网址:http://dev.website.com/folder1/translate/horse,我希望将其重定向到:http://dev.website.com/folder1/translate.php?word=horse

我的 .htaccess 以打开 RewriteEngine 开始,我尝试了各种尝试让它工作,但无论如何,它只显示我的主页(默认的 404 重定向)。

我尝试过的事情:

RewriteRule ^translate/.*$ translate.php?word=$1
RewriteRule ^translate translate.php

还有一些我不记得了,但我什么都做不了。

我使用的 .htaccess 文件位于文件夹 1 中。我还尝试将随机字符放入文件中以使其引发错误,并且确实如此。

我缺少什么吗?如何正确创建此重定向?

根据要求,这是我的文件结构。

我有域 www.website.com 和一个子域 dev.website.com。子域设置为重定向到 www.website.com/dev。因此,在这种情况下,dev.website.com/folder1/translate.php = www.website.com/dev/folder1/translate.php。我不确定屏蔽是如何完成的,因为它是通过我的网络主机的 cpanel 完成的。

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect


    【解决方案1】:

    您没有在括号中捕获$1,所以这应该可以:

    在 DOCUMENT_ROOT/.htaccess 中:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^folder1/translate/(.*)$ /folder1/translate.php?word=$1 [L,QSA]
    

    在 DOCUMENT_ROOT/folder1/.htaccess 中:

    RewriteEngine On
    RewriteBase /folder1/
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^translate/(.*)$ translate.php?word=$1 [L,QSA]
    

    【讨论】:

    • 我之前尝试过类似的方法。现在使用它仍然显示主页(由于文件夹结构而减去 css)。我的 .htaccess 是这样的: RewriteCond %{REQUEST_FILENAME} 上的 RewriteEngine !-f RewriteRule ^translate/(.*)$ translate.php?word=$1 [L,QSA] 似乎在某处有另一个设置搞砸了。
    • 对于 css、js,请尝试在页面标题中添加:<base href="/" />
    • 但是在你的css、js、图片文件中最好使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以 http:// 或斜杠 / 开头。
    • 对不起,我不希望它显示主页。主页是 dev.website.com/index.php。显示的不是 dev.website.com/folder1/translate.php,css 只是一个旁注,无关紧要。
    • 不,同样的问题。显示主页(这是我的默认 404 设置)。
    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多