【发布时间】:2021-10-26 03:19:38
【问题描述】:
我正在尝试将一个开源论坛集成到我的 WordPress 安装中,如果我可以让重写规则起作用,我可以弄清楚接下来的步骤,到目前为止我有以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^forum/qa\-theme/(.*) forum-embed/qa-theme/$1 [QSA,L]
RewriteRule ^forum/qa\-content/(.*) forum-embed/qa-content/$1 [QSA,L]
RewriteRule ^forum/([\w]+)$ forum/?url=$1 [QSA,L]
</IfModule>
前两条规则有效,但最后一条,我已经尝试了对这个正则表达式的各种更改 - 我想把 forum/ 之后的 whatever 放到一个查询字符串作为url 参数。我确定我是在小心翼翼地表达 - 我错过了什么?
提前致谢!
编辑
还不清楚您是如何避免与 WordPress 前端控制器发生冲突的?大概您将这些指令放在 .htaccess 文件的顶部,在 # BEGIN WordPress 部分之前?但是,在 /forum 子目录中创建另一个 .htaccess 文件可能更简单,这将(默认情况下)覆盖 WordPress 指令。
一个合理的观点,是的,我把它放在# BEGIN WordPress 上面,但我会在论坛目录中创建一个 .htaccess。
您说您“尝试了对此正则表达式的各种更改”,但此正则表达式肯定与您的第一个示例不匹配。 \w 速记字符类不包括斜杠和连字符。
的确,这是一个不好的例子,无法说明我对我的问题的态度,但我也尝试过:
- ^forum/(.+)$
- ^forum/([a-z-A-Z-0-9-/]+)$
/forum/ 可能是一个文件系统目录 - 这本身无法处理请求,它需要进一步重写为实际文件
我不明白——前两条规则有效,我可以导航到所有页面,包括forum/——index.php 是配置中的默认文件,为什么这条规则必须例外?
【问题讨论】:
-
感谢您分享您的努力,您能否提及链接示例,例如 FROM which link TO 您要重写的链接?这将使我们更好地理解您的问题,谢谢。
-
当然。示例 1:forum/2/test-question => forum/?url=2/test-question 示例 2:forum/ask => forum/?url=ask 希望对您有所帮助。
-
好的,还有几个问题。第一 - 我们如何知道(通过条件)哪些规则 2 参数应该作为查询字符串发送(您的第一个 URL 示例)以及在哪里只发送 1 个参数(作为查询字符串)?
forum/ask => forum/?url=ask也没有文件名,它将在后端提供服务,如 index.php 等?请确认一次,我会尽力帮助您。 -
不确定我是否 100% 理解你,但我真的只需要将整个组 ($1) 作为查询字符串 (url) 的唯一参数 - 我可以分解值根据需要接收页面。这有帮助吗?
-
对不起,我还不清楚。我这边有两个问题。 1st-您在哪里收集查询字符串到您在后端发送的文件,例如:(index.php OR index.html 等)?第二-您说您希望将 $1 的所有内容作为查询字符串发送,但是从哪里决定 $1 具有什么价值?就像在 URL
forum/2/test-question中一样,它向查询字符串发送 2 个值,但在 URLforum/ask中,它向查询字符串发送 1 个值。请就这些问题告诉我一次,谢谢。
标签: mod-rewrite apache2