我目前正在尝试制定一个重写规则,该规则将显示http://mywebsite.com/login/在地址栏中,但实际上是从http://mywebsite.com/index.php?action=login.我试过以下几种:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index'.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9'-]+)/?$ /?$.php?page=$1 [L,NC]
</IfModule>
URL仍然显示为http://mywebsite.com/index.php?action=login虽然
基本上,我想我想要一个SEO风格的链接。
以下是您可以使用的(静态版本):
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index'.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(index|blogs|projects|contact|login)/?$ index.php?action=$1 [L,NC]
正如您所看到的,在()
之间的规则中,每个"页面"都是硬编码的。
你也可以让它更"动态":
RewriteRule ^([a-z0-9'-]+)/?$ index.php?action=$1 [L,NC]
这将自动使用任何字母(我添加了破折号和数字,如索引、联系或联系我们),并将其用作"动作"。因此,在您的脚本中,您可以检查其中一个是否不被接受(例如,某人键入:not-a-good-page),然后您可以重定向到404。通过这种方式,您的脚本控制逻辑,而不是.htaccess.