PHP的URL问题

原创
2016-06-23 13:50:15 632浏览

大家好。我有个问题: 我的houtai目录放在view下,不在根目录下。如果输入http://ip/houtai 会报404 查看Apache日志,发现服务器去根目录下找houtai文件夹,然后找不到报404. 我期望的是PHP框架解析出houtai文件夹,并到view文件夹下找页面。是不是哪里的配置有问题,URL重写规则配置错了?
在线等,多谢。


回复讨论(解决方案)

houtai目录放在view下,不在根目录下

你是怎么让你主机去访问view下文件呢?

如果你的部署符合当前使用PHP框架的规范,不可能出现这种问题
另外提醒一下,http://ip/houtai 如果你没有写rewrite,它本身就是访问根目录的houtai文件夹,然后寻找下面的index.php/.html等等 至少要改成http://ip/index.php/houtai

如果你的部署符合当前使用PHP框架的规范,不可能出现这种问题
另外提醒一下,http://ip/houtai 如果你没有写rewrite,它本身就是访问根目录的houtai文件夹,然后寻找下面的index.php/.html等等 至少要改成http://ip/index.php/houtai



恩 怀疑是伪静态开启的有问题

你的框架现在有用什么重写规则吗?如果没有,那么在根目录读取houtai是正常的。

你是想写一个重写规则,访问 http://ip/houtai rewrite 到 http://ip/view/houtai ?

服务器上写下重写规则就可以了吧,把houtai映射到/view/houtai下

你的框架现在有用什么重写规则吗?如果没有,那么在根目录读取houtai是正常的。

你是想写一个重写规则,访问 http://ip/houtai rewrite 到 http://ip/view/houtai ?



我不想直接到根目录下寻找文件,想让服务器先忽略掉ip/后的文件或文件夹,先到根目录index.php中,然后通过PHP的MVC框架解析出URI,然后到view下寻找。这种方式通过.htaccess可以吧?呵呵,PHP新手求指导。


你的框架现在有用什么重写规则吗?如果没有,那么在根目录读取houtai是正常的。

你是想写一个重写规则,访问 http://ip/houtai rewrite 到 http://ip/view/houtai ?



我不想直接到根目录下寻找文件,想让服务器先忽略掉ip/后的文件或文件夹,先到根目录index.php中,然后通过PHP的MVC框架解析出URI,然后到view下寻找。这种方式通过.htaccess可以吧?呵呵,PHP新手求指导。


补充:我的控制器里也有houtai这个文件夹

有什么问题就直接说,何必绕那么一个圈子

RewriteEngine on#如果目录存在就直接访问目录不进行RewriteRuleRewriteCond %{REQUEST_FILENAME} !-d#如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)RewriteCond %{REQUEST_FILENAME} !-f#所有找不着实际路径的文件,统一交给index.php处理RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

你需要写一条伪静态的规则把你的期望的url指向index.php,ip/后的文件或文件夹作为参数传给index.php.
比如 这样:RewriteRule ^(.*)$ /index.php?/$1
具体怎么写规则 需要看你的框架是怎么解析url的

有什么问题就直接说,何必绕那么一个圈子

RewriteEngine on#如果目录存在就直接访问目录不进行RewriteRuleRewriteCond %{REQUEST_FILENAME} !-d#如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)RewriteCond %{REQUEST_FILENAME} !-f#所有找不着实际路径的文件,统一交给index.php处理RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]



我在根目录下.htaccess里写了,不生效啊。

http://www.jb51.net/article/25476.htm


你的框架现在有用什么重写规则吗?如果没有,那么在根目录读取houtai是正常的。

你是想写一个重写规则,访问 http://ip/houtai rewrite 到 http://ip/view/houtai ?



我不想直接到根目录下寻找文件,想让服务器先忽略掉ip/后的文件或文件夹,先到根目录index.php中,然后通过PHP的MVC框架解析出URI,然后到view下寻找。这种方式通过.htaccess可以吧?呵呵,PHP新手求指导。



那就是网站使用单入口的rewrite了,同thinkphp一样。

在项目的根目录下面建立一个.htaccess文件,里面写入下面的内容:
RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 


开启.htaccess方法
打开httpd.conf(在那里? APACHE目录的CONF目录里面),用文本编纂器打开后,查找
(1)
Options FollowSymLinks
AllowOverride None

改为
Options FollowSymLinks
AllowOverride All

(2)去掉下面的注释
LoadModule rewrite_module modules/mod_rewrite.so

http://www.jb51.net/article/25476.htm



我在Apache conf中加载rewrite模块时报 module rewrite_module is built-in and can't be loaded,应该是内建的,不用再Load了吧。然后在vhost的conf中设置了 AllowOverride All, 可是.htaccess还是不生效。


http://www.jb51.net/article/25476.htm



我在Apache conf中加载rewrite模块时报 module rewrite_module is built-in and can't be loaded,应该是内建的,不用再Load了吧。然后在vhost的conf中设置了 AllowOverride All, 可是.htaccess还是不生效。


.htaccess 一直不生效,如果把重写规则放到vhost下的conf中,网站会报400错误。求大家帮忙

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。