【问题标题】:htaccess slug 404 errorhtaccess slug 404错误
【发布时间】:2013-09-18 04:11:46
【问题描述】:

我正在创建一个 php 网站,其中页面由 slug 链接(例如 mysqite.com/slug)。

对于诸如“home”、“about-us”、“contact”、“my-result strong>' 等它工作正常,但对于一些像 'result'、'about' 这样的 slug 会显示 404(未找到)错误。我如何解决这个问题?

Options +FollowSymLinks

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /institution/http/
RewriteRule departments(|[a-zA-Z0-9_\-/]+)$ department.php?page=$1
RewriteRule stream/(|[a-zA-Z0-9_\-/]+)$ post.php?page=$1
RewriteRule faculty/([a-zA-Z0-9_\-/]+)$ new_post.php?page=$1
RewriteRule ^([a-zA-Z0-9\-\/]+)$ index.php?page=$1

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* $0.php [L]
</IfModule>

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    您在 CMS 中解决此问题,以便您重定向到正确的 slug 或为“结果”和“关于”创建页面。否则,您可以在您的 htaccess 文件中执行此操作:

    RewriteEngine On下面添加这个:

    RewriteRule ^about$ /about-us [L,R=301]
    RewriteRule ^result$ /my-result [L,R=301]
    

    【讨论】:

    • 感谢 Jon Lin 的建议。我绝对可以为 about 和 result 分配单独的页面。但是为什么'about' 或'result' slug 不能单独工作(例如mysite.com/cms/about)?根据我的 .htaccess 规则,这些将分别重定向到 index.php?page=about & index.php?page=result。有什么想法吗?
    【解决方案2】:

    您可能在同一目录中已经存在 about.phpresult.php 文件。 slug 与文件名匹配。如果是这样,请尝试:

    将您的第一行编辑为:

    Options +FollowSymLinks -MultiViews
    

    删除线:

    RewriteRule .* $0.php [L]
    

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 1970-01-01
      • 2014-03-08
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 2014-05-12
      • 1970-01-01
      相关资源
      最近更新 更多