1

感谢您帮助我解决此问题。我的网址看起来像:

http://local-host/enc/?aya-bi-aya=aya-6&assurah=an-nisa&attab=attakhrij

目标是使它们看起来像:

http://local-host/enc/aya-bi-aya/an-nisa/aya-6/attakhrij

我在 .htaccess 中定义的规则是:

# BEGIN WordPress
RewriteEngine On
RewriteRule   ^aya-bi-aya/(.+)/(.+)/(.+)$   ?aya-bi-aya=$2&assurah=$1&attab=$3   [L]
# END WordPress

我收到一个 404 页面。我错过了什么?

4

2 回答 2

1

我刚刚根据您共享的新信息更新了此规则:

RewriteEngine On
RewriteRule ^aya-bi-aya/([\w-]+)/([\w-]+)/([\w-]+)/?$  ?aya-bi-aya=$2&assurah=$1&attab=$3 [L]

我正在使用一个\w相当于[a-zA-Z0-9_]. 使规则更具可读性,/?最后允许您的规则与没有尾部斜杠的 URL 一起使用。

于 2013-08-27T20:11:43.390 回答
1

“?”之后的所有内容 在原始请求(即“查询字符串”)中不是主 URL 的一部分。

但是,您可以通过以下方式访问查询字符串:

RewriteCond %{QUERY_STRING} ....

所以更像这样:

RewriteEngine On
RewriteCond /enc/
RewriteCond %{QUERY_STRING}     ^aya-bi-aya=([^&]*)\&assurah=([^&]*)\&attab=([^&]*)$    
RewriteRule   .*  /enc/aya-bi-aya/%1/%2/%3   [L,R=301]*

L = 最后,R = 重定向以更改用户浏览器中显示的 URL

于 2013-08-28T00:38:29.453 回答