【问题标题】:htaccess and url redirectinghtaccess 和 url 重定向
【发布时间】:2012-02-03 22:14:33
【问题描述】:

我正在开发一个 MVC PHP 应用程序。

我的 .htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ /mvc/index.php?url=$1 [QSA,L]

我的 index.php:

<?php

$url = $_REQUEST['url'];

echo $url;

因此,当我在 url 中写入 (mysite.com/mvc/help) 之类的内容时,php 会在主页上打印 (help)。它适用于我在 url 中写的所有内容,例如 (mysite.com/mvc/index/log) 返回 (index/log) 但如果我写 (mysite.com/mvc/index) 那么我没有错误但是没有显示任何内容,并且 $url 未设置!

我希望我解释正确。 干杯

编辑:我犯了一个错误,(mysite.com/mvc/index/log) 什么也没返回。似乎如果第一个单词是“index”它不起作用,因为如果 url 像 (mysite.com/mvc/log/index) 它起作用并返回 (log/index)。

我还在 index.php (print_r($_GET);) 中添加了一行,当 url 类似于 (mysite.com/mvc/index/log 或 mysite.com/mvc/) 时返回一个空数组索引),如果这可以帮助...

经过一番调查,我认为问题在于“索引”这个词是用“.html”或“.php”自动完成的,我不知道如何摆脱它......


解决方案: 这是我的 htaccess 工作:

Options -Indexes +FollowSymLinks -Multiviews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ /mvc/index.php?url=$1 [L]

【问题讨论】:

  • 会不会是第三个 RewriteCond?我总是使用 !-d 和 !-f,但以前从未见过 !-l。它有什么作用?
  • !-d 是“不是文件夹”,!-f 是“不是文件”,!-l 是“不是链接”。我试过没有它,但我遇到了同样的问题。

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


【解决方案1】:

好的,我已经知道如何让它工作了,看来我需要这条线:

Options -Indexes +FollowSymLinks -Multiviews

【讨论】:

    【解决方案2】:

    尝试将其更改为:

    RewriteRule ^mvc/(.+) /mvc/index.php?url=$1 [QSA,L]
    

    并将您的 $_REQUEST 更改为 $_GET

    $url = $_GET['url'];
    

    【讨论】:

    • 我已经尝试过这些更改,但还是一样,我不明白为什么它适用于“indexe”或“inde”,但不适用于“index”。
    • 这是因为您的第二个 RewriteCond 发现 index 是一个存在的文件。我会保留第一个 RewriteCond,并摆脱其他两个。
    • 我试图摆脱其他两个条件,但我不知道为什么,但后来出现“500 内部服务器错误”。
    • @Grexis no 第二个条件不匹配“索引”。它会匹配“index.php”。除非您的 vhosts/httpd.conf (apache2.conf) 中的某些东西阻碍了它。听起来像是配置或模块问题。
    • 感谢您的回答,我的网站由 1&1 托管,所以我不知道如何配置 vhosts/httpd.conf。我应该联系他们吗?
    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 2016-09-28
    • 2013-01-27
    • 2015-09-18
    • 2011-03-23
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多