【问题标题】:.htaccess - Redirect all the pages after domain name.htaccess - 重定向域名后的所有页面
【发布时间】:2017-06-21 12:37:16
【问题描述】:

我想将域后的所有 php 页面重定向到 username.php?un=。 例如,如果用户请求http://example.com/username,那么页面将被重定向到 username.php。

我尝试使用以下 htaccess 代码。但它不适合我。

RewriteCond %{REQUEST_URI} /(.*)$
RewriteRule /(.*)$ username.php?un=$1 [L]

此域仅用于显示用户信息。所以只有 2 个页面会被使用。

【问题讨论】:

    标签: php .htaccess redirect mod-rewrite


    【解决方案1】:

    看看这个 .htaccess 代码:

     RewriteEngine On
     RewriteRule ^(.+)\.html$ $1.php [L]
     RewriteCond %{REQUEST_URI} /index\.php
     RewriteRule ^(.*)$ username.php?un=$2 [L,QSA]
     RewriteCond %{REQUEST_URI} /$
     RewriteRule ^(.*)$ username.php?un=$1 [L,QSA]
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule ^(.*)$ username.php?un=$1 [L,QSA]
    

    这意味着所有 url 都包含索引,使用 GET - 参数“un” ($_GET["un"]) 打开 username.php 文件。在$_GET["un"] 中,您可以找到正常的网址。

    编辑:此规则中只有 HTML 文件:

     RewriteEngine On
     RewriteRule ^(.*)+\.html$ username.php?un=$2 [L,QSA]
     RewriteCond %{REQUEST_URI} /$
     RewriteRule ^(.*)+\.html$ username.php?un=$1 [L,QSA]
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule ^(.*)+\.html$ username.php?un=$1 [L,QSA]
    

    【讨论】:

    • 除了 index.php 或 index.html 之外的代码是否可以使用上面的代码
    • 是的,将 Rewrite Rule ^(.*)$ 行更改为 ^(.*)+\.php$,因此只有 php 文件在此规则中,或者 html 而不是 php
    • Richard,谢谢它的工作原理.. 但我需要对你的代码做一点小改动。我想要除 index.php 之外的重定向。
    • 谢谢理查德..现在效果很好..我也接受了你的回答..继续编码.. :-)
    【解决方案2】:

    试试下面,

    RewriteEngine On
    RewriteRule ^(.+) username.php?un=$1 [R=301]
    

    【讨论】:

    • 禁止访问!错误 403
    • 我不知道为什么你得到这个可能是配置文件中的一些其他规则正在工作,但对于重定向部分,如果你看到here
    • 403错误是因为这是redirect,不是rewrite,而且substitution上没有斜杠前缀i>,因此添加了目录前缀。但是,如果第一次重定向成功,这也会导致重定向循环。
    猜你喜欢
    • 2010-12-29
    • 2011-09-24
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2011-09-13
    • 2017-12-26
    • 1970-01-01
    相关资源
    最近更新 更多