我目前正在尝试制作重写规则,在地址栏中显示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>
但网址仍会显示为http://mywebsite.com/index.php?action=login。
基本上,我想要一个SEO风格的链接。
答案 0 :(得分:3)
以下是您可以使用的内容(静态版本):
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]
这将自动使用任何字母(我添加了短划线和数字 - 如索引,联系人或联系我们)并将其用作“操作”。因此,在您的脚本中,您可以检查其中一个是否被接受(例如某人类型:不是一个好页面)然后您可以重定向到404.这样,您的脚本控制逻辑而不是.htaccess。 / p>