【问题标题】:htaccess rewrite url GET parameter that doesn't have a index.php file namehtaccess 重写没有 index.php 文件名的 url GET 参数
【发布时间】:2018-03-28 23:42:00
【问题描述】:

我在我的个人资料目录中创建了一个 .htaccess 文件,并且能够更改网址:

http://www.legacycloud.org/profile/index.php?user={username}

到

http://www.legacycloud.org/profile/{username}

这完全有效。但是如果用户忽略 index.php 并放置:

http://www.legacycloud.org/profile/?user={username}

通常用户不会知道 url 参数“用户”,但以防万一我将如何继续制作

http://www.legacycloud.org/profile/?user={username}

转换成

http://www.legacycloud.org/profile/{username}

也是。

我尝试使用我当前的代码

RewriteEngine On
RewriteBase /profile/

RewriteCond %{THE_REQUEST} \s/profile/index\.php\?user=([a-zA-Z0-9_-]*)\s [NC]
RewriteRule . %1? [R=301,L]

RewriteRule ^([a-zA-Z0-9-_]+)$ index.php?user=$1 [L]
#Code above works (Converts profile/index.php?user -> profile/user)

#Code below doesn't work (Needing to convert profile/?user -> profile/user)
RewriteCond %{THE_REQUEST} \s/?user=([a-zA-Z0-9_-]*)\s [NC]
RewriteRule . %1? [R=301,L]

RewriteRule ^([a-zA-Z0-9-_]+)$ ?user=$1 [L]

但这似乎行不通。我四处寻找有人有一个例子,但大多数代码都包含一个 php 文件扩展名,当我尝试设置配置文件的路径并删除文件扩展名部分时,它仍然不起作用。

同样,上述代码的 .htaccess 文件夹位于配置文件目录中,而不是根目录中。

如果您需要更多信息,请在下方评论。

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    您的重写条件实际上与 /?user=foobar 之类的根级别请求匹配,但由于模式错误,这与 /profile/?user=foobar 不匹配。你需要在%{THE_REQUEST}条件的模式下写完整的url路径,所以改变

    `RewriteCond %{THE_REQUEST} \s/?user=([a-zA-Z0- 9_-]*)\s [NC]` 
    

    到

    `RewriteCond %{THE_REQUEST} \s/profile/?\?user=([a-zA-Z0- 9_-]*)\s [NC]` .
    

    请在下面找到最终的 .htaccess 代码 -

    RewriteEngine On
    RewriteBase /profile/
    
    RewriteCond %{THE_REQUEST} \s/profile/index\.php\?user=([a-zA-Z0-9_-]*)\s [NC]
    RewriteRule . %1? [R=301,L]
    
    RewriteRule ^([a-zA-Z0-9-_]+)$ index.php?user=$1 [L]
    #Code above works (Converts profile/index.php?user -> profile/user)
    
    #Code below doesn't work (Needing to convert profile/?user -> profile/user)
    RewriteCond %{THE_REQUEST} \s/profile/?\?user=([a-zA-Z0- 9_-]*)\s [NC]
    RewriteRule . %1? [R=301,L]
    RewriteRule ^([a-zA-Z0- 9 -_]+)$ ?user=$1 [L]
    

    【讨论】:

      猜你喜欢
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多