我试图将我的主页或网站上的任何其他页面重定向到特定的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已启用。
它仍然无法正常工作。
答案 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 文件中将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服务器以使更改生效
答案 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