重写规则斜杠结束和改进斜杠、重写、规则、结束

2023-09-02 11:40:24 作者:一辈子的最爱

我有以下规则:

RewriteRule ^news/([^/]*)$ /news.php?lang=$1 [L]

在这里我可以到达的网站 HTTP://domain.tld/news/de 但我//domain.tld/news/de/ (反斜杠在:不能 HTTP到达他们结束)。

Here i can reach the website with http://domain.tld/news/de but i can't reach them with http://domain.tld/news/de/ (backslash at the end).

我怎么能作出这样的?

第二个问题是我怎么能总之这3规则合为一体,因为它处理所有相同的页面?

Second Question is how can i short this 3 rules into one, because it handles all the same page?

# News
RewriteRule ^news/page/([^/]*)/([^/]*)$ /news.php?page=$1&lang=$2 [L]
RewriteRule ^news/page/([^/]*)$ /news.php?page=$1 [L]
RewriteRule ^news/([^/]*)$ /news.php?lang=$1 [L]

在此先感谢。

Thanks in advance.

推荐答案

使用可选尾随斜线和可选择性地开启多视​​图关闭:

Use an optional trailing slash and optionally turn MultiViews off:

Options -MultiViews
RewriteEngine On

RewriteRule ^news/page/([^/]+)/([^/]+)/?$ news.php?page=$1&lang=$2 [L,QSA,NC]
RewriteRule ^news/page/([^/]+)/?$ news.php?page=$1 [L,QSA,NC]
RewriteRule ^news/([^/]+)/?$ news.php?lang=$1 [L,QSA,NC]