【发布时间】:2015-12-20 17:00:09
【问题描述】:
这是刚刚发生的一系列令人费解的事件。
1) 我有一个正常工作的 Laravel 安装,有一个 empty .htaccess 文件,所有 URL 都可以工作。
2) 我在.htaccess 中添加了一些规则,只是为了玩一玩,然后删除这些规则。
3) 现在我又有了一个空的.htaccess(因此与上面的第 1 步相比没有任何变化)但是现在除了主页之外没有其他 URL 可以工作了。
例如,你会看到 http://jovansprojects.com/march_madness/ 工作(即 Laravel 文件夹的根目录),使用以下路由:
Route::get('/', 'HomeController@showWelcome');
但是http://jovansprojects.com/march_madness/login 不再工作了,尽管之前工作正常。
这是相关路线:
Route::get('login', 'SessionsController@create');
请注意,它不会引发 Laravel 错误,例如“未找到异常” - 它似乎根本不知道 Laravel 已安装在那里。
我根据一些在线建议尝试清除 Artisan 的缓存,但没有帮助。
所以,总结一下:.htaccess 与之前完全相同(空),但似乎服务器甚至不知道要求 Laravel 再处理这些 URL,而不是超出主页。
这些是我在 .htaccess 中添加和删除的规则(我想重定向尾部斜杠):
Options -MultiViews
RewriteEngine On
RewriteBase /march_madness/
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ $1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
我怀疑RewriteBase可能与它有关,但我删除规则后为什么没有恢复到原来的样子?
【问题讨论】:
-
当你有那些 .htaccess 指令时它“工作”了吗?只是为了确认...您已完全删除了该文件?或者你有一个空文件——实际上是nothing?这个 .htaccess 文件在哪里 - 在文档根目录中?
-
不,它不适用于 htaccess 指令(老实说,我什至不理解它们,我从另一个 SO 问题复制/粘贴)。文件中实际上没有任何内容,就像它过去工作时一样。我也尝试完全删除文件,同样的问题仍然存在。该文件位于 Laravel 的根目录 (march_madness)。
-
就其本身而言,在 .htaccess 中添加和删除这些指令应该不会产生任何持久的影响。那么,必须有一些其他的缓存机制或者 其他的东西被改变了?
-
如果有缓存机制在起作用,那肯定是默认安装的,因为我没有加。有任何想法吗?从我的角度来看,没有其他任何改变。
-
现在我觉得自己很笨。在不同的目录中有两个 .htaccess 文件,其中一个具有允许不带“index.php”的 URL 的说明。现在很容易解决。感谢您阻止我在此问题上浪费更多时间 :) 如果您添加答案,我将很乐意接受。
标签: php .htaccess laravel redirect laravel-4