问题描述
我最近在我的 .htaccess 文件中不再使用它
RewriteRule ^example index.PHP?page=example [L]
为此:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^./]+)/?$ index.PHP?page=$1 [L,QSA]
问题是,如果我访问诸如 example.com/euffhfrfreif 之类的内容,它只会显示我的主页。
我正在尝试配置虚 URL,以便访问者不会使用 example.com/index.PHP?page=contact,他们只会访问 example.com/contact - 我在网上看到了很多它应该对 Google 等更好。
此错误不适用于任何文件夹,因此访问 example.com/djfhds/fdjdnf 将显示 404 错误。
另外:我打开了 rewriteengine 并在 .htaccess 中定义了一个 404 错误页面。
解决方法
根据您展示的样本,请您尝试以下规则。请确保在测试您的网址之前清除浏览器缓存。
RewriteEngine ON
RewriteRule ^([^./]+)/?$ index.php?page=$1 [L]
问题是您在 index.php 中使用 else 语句来显示您的主页。
将您的 else 语句更改为 404 错误页面并使您的主页位于 index.php?page=home
,然后将其添加到 htaccess:
RewriteRule ^([^./]+)/?$ index.php?page=$1 [L]