.htaccess如何在网址

时间:2017-03-17 22:24:48

标签: apache .htaccess mod-rewrite

你好我创建一个小cms来学习mvc,我有一个非常基本的问题。

通常我的域名后的整个网址会显示在变量中,但如果我输入“index”这个词,我的变量就完全是空的。

我的index.php:

<?php

$url = $_GET['url];

echo $url;

?>

那是我的.htaccess

RewriteEngine On

Options +FollowSymLinks

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

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

所以,如果我输入以下网址:

“localhost / ~username / mycms / indexabc”result =&gt; indexabc

“localhost / ~username / mycms / index”result =&gt;

“localhost / ~username / mycms / index.php”result =&gt;

“localhost / ~username / mycms / index.php2”result =&gt; index.php2

任何人都知道我该怎么做才能使我的.htaccess还重定向索引和index.php?

我的httpd.conf文件:

<Directory "/Users/Sam/Sites/">
  Options Indexes FollowSymLinks Multiviews
  AllowOverride All
  Order allow,deny
  Allow from all
  Require all granted
</Directory>

2 个答案:

答案 0 :(得分:0)

仅在应用这些条件时才应用规则:

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

条件意味着只有在您的URL不是现有目录,文件或文件系统链接时才应用它们。我确定文件index.php存在,所以这就是localhost/~username/mycms/index.php不起作用的原因。

我认为index目录中还存在名称为mycms的现有文件或目录。这可能是localhost/~username/mycms/index不起作用的原因。

答案 1 :(得分:0)

我制作本教程,但在我的本地主机上它不起作用。

https://www.youtube.com/watch?v=Aw28-krO7ZM&t=1191s

我的文件夹中有一个index.php,但没有文件夹。

这让我很困惑,因为我不明白我的本地主机有什么问题。