【发布时间】:2016-04-21 21:01:45
【问题描述】:
我接手了一个老开发人员刚刚消失的项目,我自己分配的第一个任务是能够在 EC2 主机上复制整个堆栈。
在原来的预先存在的主机上,我可以点击http://www.example.com/users/login/ 的 URL(我可以去掉尾部的斜杠,它就可以点击登录页面)。
查看/var/www/[example.com]/ 中的源代码——我可以找到一个sections/users/login.php,它看起来像是HTML 页面的呈现位置。
我的辅助 EC2 主机中有相同的代码,但是我不想使用虚拟主机,我只是将它放在 /var/www/html/ 中(而不是 /var/www/[example. com]/),但我得到的是 404。
我应该在哪里寻找将http://www.example.com/users/login/ 指向/sections/users/login.php 的映射?
我对 RewriteRule 的东西不是很熟悉,但是 repo 和 httpd.conf 中仅有的 2 个 .htaccess 文件,我看不到任何地方与“部分”有关,所以我不确定在哪里看。
我根目录下的 .htaccess 是:
php_value post_max_size 1024M
php_value upload_max_filesize 1024M
php_value memory_limit 1024M
php_value max_input_time 1800
php_value max_execution_time 1900
php_value session.gc_maxlifetime 7200
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)example.mobi [NC]
RewriteRule ^(.*)$ http://%1example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.*)example.us [NC]
RewriteRule ^(.*)$ http://%1example.com/$1 [R=301,L]
RewriteBase /
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
RewriteRule ^(.*)\.vcf vcf.php [L]
RewriteRule ^shared/(.*)$ /$1 [L,NC,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Options -Indexes
【问题讨论】:
-
当前.htaccess文件的内容是什么?如果它将所有内容都重写到 index.php 文件,那么它就是 index.php 中的东西,它正在路由 URL。
-
@ChrisBanks -- 我添加了 .htaccess 文件。这些规则之一是否在执行您建议的重写?最后一条规则没有这样做……是吗?
-
是的。该网站是否使用任何类型的框架?只需查看 index.php 的内部,无论是在那里还是在另一个文件中,它都在解析查询字符串并将其重新映射到您提到的文件
-
不,没有 CakePHP 或任何框架,但我知道包含在哪里发生。现在我看到 .htaccess 只是没有在我试图模拟原始设置的辅助服务器上被读取,所以......这是我的问题。我想我现在需要弄清楚,谢谢!
-
您的评论和卢锡安的回答帮助我解决了问题。
标签: php apache .htaccess mod-rewrite httpd.conf