Php .htaccess将查询字符串重写为路径的规则

Php .htaccess将查询字符串重写为路径的规则,php,wordpress,apache,.htaccess,mod-rewrite,Php,Wordpress,Apache,.htaccess,Mod Rewrite,我正在寻找一种方法来获取URL site.com/collection/name 提供实际位于…的内容。。。 site.com/collection/?collection\u name=name 该网站正在WordPress上运行,目前正在使用根目录中的默认.htaccess规则: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ -

我正在寻找一种方法来获取URL site.com/collection/name 提供实际位于…的内容。。。 site.com/collection/?collection\u 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
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress

因为它在WordPress上,所以它当前正在查找不存在的页面/集合/名称,并产生404错误。

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

如果是,您可以尝试以下方法:

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

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

但是“名称”部分必须是动态的,这样就不会有真正的名为“名称”的文件夹。在这种情况下,您可以将第三行更改为:“RewriteRule^/$/collection/index.php”。。。当然,如果“collection”文件夹中有index.php文件,那么“/collection”实际上是一个页面,而不是文件夹。如果我创建一个“集合”文件夹,它会断开。我想我需要将规则放在根目录的.htaccess中。@Jamie我也这样认为,您应该将这些规则包含在root.htaccess文件中。在这种情况下,您当然应该省略前两行(因为它们已经存在)。但是,我必须说我几乎没有Wordpress的经验,因为我通常从零开始编写我的项目。我在谷歌上搜索了两篇有趣的文章:而且……你可能想看看它们,或者谷歌“wordpress.htaccess rules”搜索更多结果。。。