0

我希望这些 URL 有效...

example.com/

example.com/results/

example.com/results/live/

example.com/results/live/123

example.com/results/end/

live、ended 等总是按字母顺序排列

123 永远是数字(页码值)

我想要做的是将一个 php 文件放入 /results/ 并将“live”和“123”作为两个变量传递。我可以让它工作,但如果我省略“/123”,那么我也希望“/live”继续工作。问题是该目录不存在且不包含两个变量,因此被拒绝。我尝试过链接,但无法使其正常工作。

一个简化的 htaccess 文件如下所示

<IfModule mod_rewrite.c>
RewriteEngine OnRewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^results/([A-Za-z]+)/([0-9]+)/?$ /results/index.php?format=$1&pagenum=$2 [L]
</IfModule>
Options All -Indexes
ErrorDocument 404 /errors/404

我曾尝试使用“-”而不是目录分隔符,同样的问题

本质上,我对当前处理任何丢失的文件或文件夹的方式感到满意,但我想为此目录创建一个例外

如果我想不通,另一个冗长的选项是在“/results/”中使用自己的 php 文件创建实际的子目录,并将分页作为一个变量进行管理。

任何指针?

4

1 回答 1

0

试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^results/([A-Za-z]+)/?(?:([0-9]+)/?|)$ /results/index.php?format=$1&pagenum=$2 [L]

(?:([0-9]+)/?|)是一个有条件的前瞻。它使最后一部分(例如/1234)成为可选的。如果它不存在,pagenum将是空白的。

于 2013-08-16T19:10:42.200 回答