【问题标题】:Strange URL RewriteRule .htaccess Issue needs explaination奇怪的 URL RewriteRule .htaccess 问题需要解释
【发布时间】:2013-12-18 11:07:10
【问题描述】:

我有 book.php?id=23 之类的 URL,并使用 htaccess 使它们成为 book/id/title 我试过这个

RewriteRule ^book/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]

但它不起作用,它正在转发到 books.php 但没有 $_REQUEST 数据 原来这是因为 url 引用与我在社区的帮助下调用的 php 文件的名称相同,以解决这个问题

RewriteRule ^books/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]

这是我目前工作的 .htaccess:

RewriteEngine On
RewriteRule ^kitap/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]
RewriteRule ^yyin/([0-9]+)/([^/]+)/?$ yayin.php?id=$1 [NC,L,QSA]
RewriteRule ^proje/([0-9]+)/([^/]+)/?$ project.php?id=$1 [NC,L,QSA]

PeteR:

我见过的每个在线教程都使用 ^product 和 product.php 或 ^category 和 category.php 所以我不知道为什么 应该。也许其他人可以对此有所了解?

【问题讨论】:

    标签: php apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    在我们对您的原始问题进行了小型讨论后,我开始对此感到困惑,我开始认为这取决于服务器配置以及它是否会运行无扩展脚本。

    例如,我的开发服务器将运行无扩展脚本,即输入 /xyz 将显示 xyz.php

    重写规则

    RewriteRule ^category/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA]
    

    不过没用

    RewriteRule ^categories/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA]
    

    确实有效。

    在不支持无扩展脚本的托管服务器上,www.mydomain.com/xyz 会给我一个 404 错误,但是:

    RewriteRule ^category/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA]
    

    按预期工作。

    我只能假设当服务器支持无扩展脚本时,如果别名与脚本名称相同,则重写规则将被忽略。

    【讨论】:

    • 我也在我的服务器上解决了这个问题,我的服务器确实支持无扩展脚本,巧合吗?不认为。同样的情况,我的其他不支持无扩展脚本的主机运行良好。
    【解决方案2】:

    您很可能有MultiViews 与重写规则冲突。

    Fulle .htaccess:(进入 DOCUMENT_ROOT 目录)

    Options +FollowSymLinks -MultiViews
    
    RewriteEngine On
    
    RewriteRule ^kitap/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]
    RewriteRule ^yyin/([0-9]+)/([^/]+)/?$ yayin.php?id=$1 [NC,L,QSA]
    RewriteRule ^proje/([0-9]+)/([^/]+)/?$ project.php?id=$1 [NC,L,QSA]
    
    RewriteRule ^books/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]
    

    【讨论】:

    • 我什至没有为您提供任何规则,所以重定向循环肯定是由现有规则/代码引起的。如果您在问题中发布完整的 .htaccess,我可以进行调查并提出修复建议。
    • 您能否在您的问题中发布您现有的 .htaccess。
    • 使用完整的 .htaccess 查看更新的代码。确保 .htaccess 和 book.php 都位于您网站的根目录,并且您的系统中没有任何其他 .htaccess
    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多