【问题标题】:.htaccess rule to rewrite query string to a path.htaccess 规则将查询字符串重写为路径
【发布时间】:2015-01-08 15:27:35
【问题描述】:

我正在寻找一种获取 URL 的方法 site.com/collection/name 提供实际位于...的内容 site.com/collection/?collection_name=name

网站在 WordPress 上运行,当前使用位于根目录中的默认 .htaccess 规则:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

因为它在 WordPress 上,它当前正在寻找一个不存在的页面 /collection/name,并产生 404 错误。

【问题讨论】:

    标签: php wordpress apache .htaccess mod-rewrite


    【解决方案1】:

    文件夹“name”下应该有一个索引文件

    如果是这样,你可以试试这个:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^/$ /collection/name/index.php
    RewriteRule ^([a-zA-Z0-9_-]+)/$ /collection/?collection_name=$1
    

    这是适用于许多类似场合的通用规则。修改它以适合您的网站...

    【讨论】:

    • “name”部分必须是动态的,所以不会有一个名为“name”的真实文件夹。
    • 在这种情况下,您可以将第三行更改为:“RewriteRule ^/$ /collection/index.php”...当然如果文件夹中有index.php文件“收藏”...
    • 它是 WordPress,所以“/collection”实际上是一个页面,而不是一个文件夹。如果我创建一个“收藏”文件夹,它会中断。我想我需要将规则放在根目录的 .htaccess 中。
    • @Jamie 我也这么认为,您应该在根 .htaccess 文件中包含这些规则。在这种情况下,您当然应该省略前两行(因为它们已经存在在那里)。但是,我必须说我几乎没有 Wordpress 经验,因为我通常从头开始编写我的项目。我进行了谷歌搜索并找到了 2 篇有趣的文章:wordpress.org/support/topic/htaccess-rewriterule-2 和 stackoverflow.com/questions/16664579/… ...您可能想查看它们或谷歌“wordpress .htaccess 规则”以获得更多结果...
    猜你喜欢
    • 2012-10-11
    • 2021-12-10
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多