【问题标题】:apache htaccess map first segment as parameter without disturbing other parametersapache htaccess 将第一段映射为参数而不干扰其他参数
【发布时间】:2013-07-07 06:21:24
【问题描述】:

这可能是一个经典的 .htaccess 问题,但我仍然找不到适合我的具体案例的问题。这是我找到的closest(我的案例中涉及的参数)。完成了两个答案的实现。不适用于我的情况。

我的情况

1) 我想要访问此 URL,

mywebsite.com/any-first-segment?param1=a&param2=b&param3=c&paramN=anything

将被重新映射到

mywebsite.com/index.php?p=any-first-segment&param1=a&param2=b&param3=c&paramN=anything

2) 如果没有参数,仍然可以工作。

3) 我永远不会有超过一个片段。 (零段仍然有效,照常映射到 index.php)


你能推荐我这个案例的工作 RewriteRule 吗?

这是最后一个 .htaccess,它仍然无法正常工作

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?p=$1 [QSA,L]

[更新!] 它正在工作。看完this后发现我搞砸了Options +FollowSymLinks

这是有效的 .htaccess。例外。

RewriteEngine On
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.+)$ index.php?p=$1 [QSA,L]

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    在规则中使用QSA flag 会将当前查询字符串附加到重写后的表单中。

    【讨论】:

    • 这是我在谷歌搜索后找到的。你是这个意思? RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
    • 我将 .htaccess 更改为尝试但仍然无法正常工作,500 内部服务器错误。这是我的。 RewriteEngine On Options +FollowSymLinks RewriteRule ^(.+)$ index.php?p=$1 [QSA,L]
    • Ups,忘记 RewriteCond Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?p=$1 [QSA,L] 仍然无法正常工作... :(
    • 好的。我搞砸了Options +FollowSymLinks & RewriteCond
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多