【问题标题】:.htaccess URL Rewrite for specific file.htaccess URL 重写特定文件
【发布时间】:2020-09-14 15:41:09
【问题描述】:

我正在尝试设置像 www.example.com/username 这样的 URL 对于类似 www.example.com/profile.php?name=username

我在我的 .htaccess 中试过这个

    RewriteEngine on
    RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]

但这使它适用于所有页面。我希望这仅在 URL 类似于 www.example.com/username 时才有效,但它也适用于 www.example.com/users.php

如果 users.php 或任何其他 .php 文件被打开,那么重写规则不应该适用于它。

如何做到这一点?

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您可以在请求 uri 上添加重写条件 匹配不以 .php 结尾的所有内容

    例如:(未测试)

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !\.php$
    RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
    

    检查 uri 是否真的是一个文件在框架中非常流行, 但它比以 .php 结尾的字符串匹配要慢,因为每个请求 apache 都需要检查文件是否存在于磁盘上。

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
    

    【讨论】:

    • 如何将http重定向到https??
    • 你能帮我吗?
    • 您需要一个 2 部分配置,1 个 vrtualhost on :80 将所有内容重定向到 https,一个 virtualhost on:443 使用此配置。
    • 怎么做?
    • RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ domain.example/$1 [R,L]
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多