.htaccess和params

Kev*_*lly 14 .htaccess mod-rewrite

我在网上挖掘.htaccess并重写我需要对我的网站做的规则.

我看到了一些我不理解的东西,想知道它意味着什么

我想知道我需要使用的所有其他我需要使用的2个正则表达式之间有什么区别:

RewriteRule ^home$ mainpage.php?id=$1 [QSA]
Run Code Online (Sandbox Code Playgroud)

RewriteRule ^home(/)?$ mainpage.php?id=$1 [L]
Run Code Online (Sandbox Code Playgroud)

我看了QSA和L,但(/)意味着什么?

Boo*_*eus 18

表达式(/)?不是(/).这意味着URL上的斜杠或不斜杠.这两个网址将转到同一个地方:

http://www.domain.com/home/

http://www.domain.com/home
Run Code Online (Sandbox Code Playgroud)

因此斜杠是可选的.这样,如果机器人或搜索引擎放置它,该规则将起作用.

您可以像这样重写规则:

RewriteRule ^home/?$ mainpage.php?id=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

另外,我看到你说:

在我需要使用的所有其他人中

如果您的所有页面都转到同一个文件(在本例中为mainpage.php),您可以创建一个自动重写它们的规则,而不是创建10或15个规则(或更多).你可以这样做:

RewriteEngine on
REwriteBase /
RewriteRule ^([a-z0-9\-_]+)/?$ mainpage.php?id=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

此规则将使用Letters,Numbers,Dash和Underscores作为页面.