.htaccess没有被阅读

时间:2012-08-06 07:12:33

标签: .htaccess

我试图将我的主页或网站上的任何其他页面重定向到特定的php页面。 这是我的htaccess

Redirect 301 http://test.com/info http://test.com/get_forms_data.php
Options +FollowSymlinks
RewriteEngine ON
RewriteRule ^test.php$ http://test.com/get_forms_data.php [R=301,L]

我已经检查了我的apache服务器.rewrite已启用。

它仍然无法正常工作。

5 个答案:

答案 0 :(得分:27)

如果无论你在.htaccess文件中添加什么内容,都不会出现错误,这意味着你可能需要

AllowOverride All

在您的网站配置中设置。

如果您使用的是ubuntu,则查找配置的位置为/etc/apache2/sites-available/。在那里你应该找到一个名为default的文件,如果这是默认 LAMP 堆栈(https://help.ubuntu.com/community/ApacheMySQLPHP)的库存安装。

关键部分是:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

现在将AllowOverride None更改为AllowOverride All。之后不要忘记重启你的apache:

$ service apache2 restart

答案 1 :(得分:8)

作为Morgan的回答的补充,将AllowOverride All放入虚拟主机有时是不够的。我在我的虚拟主机中有这个:

<VirtualHost *:80>
  ...
  <Directory />
   ...
   AllowOverride All
   ...
  </Directory>
</VirtualHost>

您希望这样做,不管你,<Directory />意味着它应该应用于文件系统的任何地方。但.htaccess仍被忽略。重新启动服务器没有帮助。我把垃圾放在.htaccess文件中以确认它没有被读取。

我的错误是假设虚拟主机覆盖了全局配置。它的类型:我的上述配置覆盖/目录的任何全局设置。但全局配置会覆盖/var/www/及以下版本。我的修复是:

<VirtualHost *:80>
  ...
  <Directory /var/www>
   ...
   AllowOverride All
   ...
  </Directory>
</VirtualHost>

(这假定在/var/www之外不需要应用其他任何配置;如果是,则为该特殊配置创建一个单独的<Directory />块。)

答案 2 :(得分:1)

我正在努力解决同样的问题,Darren Cook的回答给了我找到解决方案的明确线索。

我的应用程序位于公共www路径之外的某个文件夹中,例如/opt/my_app。 我无法创建VirtualHost,所以我在Apache的公共www中创建了一个符号链接到我的文件夹:

/var/www/html/my_app -> /opt/my_app

问题是,在我的App的Apache配置文件中,我指的是:

<Directory /opt/my_app>
  AllowOverride All
</Directory>

我的.htaccess文件未被阅读。然后我在Apache的配置中看到了这个:

<Directory /var/www/html>
  AllowOverride None
</Directory>

然后我意识到 Apache配置文件不关心符号链接,因此一般规则应用于我的应用程序的填充程序。我将Directory更改为:

<Directory /var/www/html/my_app>
  AllowOverride All
</Directory>

一切正常。

答案 3 :(得分:0)

尽管更新apache2.conf仍无法进行重定向

根据接受的答案,我在 apache2.conf 文件中将AllowOverride All更新为<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All # did not work inspite of setting to "All" Order allow,deny allow from all </Directory> ,但是通过.htaccess文件进行了重定向仍然对我不起作用

// enable module redirection
sudo a2enmod rewrite

什么对我有用...

我还必须启用模块重定向

 <!-- v-1.5 -->
 <v-container fluid grid-list-md>
      <!-- xs = 600px full screen (12) -->
      <!-- md = 600px or more. half of the screen (6) -->
      <v-layout row wrap>
          <v-flex xs12 md6 v-for="gif in results">
              <v-card >
                  <v-img :src="gif.images.fixed_height_small.url" height="200px"></v-img>
              </v-card>
          </v-flex>
      </v-layout>
  </v-container>

当然,不要忘记重启apache服务器以使更改生效

Reference

答案 4 :(得分:0)

假设 /var/www/html 是工作目录: 从 AllowOverride None 更改为 AllowOverride All

tSumToN :: (Enum a, Fractional a) => Int -> a -> a
tSumToN n = sum . take n . tSeq

tSeq :: (Enum a, Fractional a) => a -> [a]
tSeq x = 
  interleave odds evens
  where
    odds = [ o / x | o <- [1,3..]]
    evens = [ x / e | e <- [2,4..]]
    interleave [] _ = []
    interleave (y:ys) zs = y:interleave zs ys

example :: Double
example = tSumToN 4 1.1