【问题标题】:htaccess friendly URL rewrite rulehtaccess 友好的 URL 重写规则
【发布时间】:2016-08-25 16:33:54
【问题描述】:

我最近更改了我的主机,我需要为我的文件设置一个 htaccess 重写规则。我尝试了很多例子,但没有一个真正适合我的情况。我在 htaccess 中从来都不是很好,在我的旧主机上,我真的不需要任何它只是工作的东西,但这里不是。基本上我希望我的 PHP 文件没有扩展名并像目录一样对待。例如,我有一个这样的 URL:

www.domain.com/file1/{id}/{nick}

例如:

www.domain.com/myfile1/104/用户名

www.domain.com/myotherfile/455/nick

在这种情况下,File1 是一个 PHP 文件,并且 {id} 和 {nick} 是可更改的。我在我的整个网站上都有这个结构用于许多其他 PHP 文件等。所以如果可能的话,我想要 一个适用于所有文件的通用规则。我尝试使用 htaccess 删除 php 扩展等,但我得到的只是 404 错误。浏览器中的 URL 也应该在没有 PHP 扩展的情况下保持友好。所以在我的情况下,如果我手动重写我的 URL: www.domain.com/file1.php/{id}/{nick} 它有效,但我不想更改我网站上的所有链接等。所以我想要的只是隐藏 PHP 扩展并将 PHP 文件视为目录。

谢谢

【问题讨论】:

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


    【解决方案1】:

    您可以在站点根目录 .htaccess 中使用这个单一且通用的前端控制器规则:

    AcceptPathInfo On
    DirectoryIndex index.php
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([\w-]+)/(.*)$ $1.php/$2 [L]
    

    【讨论】:

    • 谢谢。我试过了,但我得到了这个:没有指定输入文件。当我试图访问一个网址时,例如:www.domain.com/file/123/user
    • 这条规则在我的 Apache 上运行良好。仅在您的站点根目录中使用此规则进行测试 .htaccess
    • 我的 htaccess 中只有这个,并且无法正常工作。这很奇怪,但我正在寻找几个小时的解决方案,但没有任何效果。
    • 如果www.domain.com/file.php/123/user 有效并且www.domain.com/file/123/user 给出No input file specified 那么它似乎不是重写问题,而是其他一些代码/配置问题。
    • 再次尝试了您的解决方案并对其进行了一些修改,看起来它现在可以工作了。我将您的最后一行更改为: RewriteRule ^([\w-]+)/(.*)$ domain.com/$1.php/$2 [L] 现在可以使用了。谢谢!
    猜你喜欢
    • 2014-03-22
    • 2015-03-25
    • 2013-02-18
    • 2015-06-03
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多