首頁 > 後端開發 > php教程 > PHP的URL问题

PHP的URL问题

WBOY
發布: 2016-06-23 13:50:15
原創
960 人瀏覽過

大家好。我有个问题: 我的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这个文件夹

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

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

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

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

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



我在根目录下.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文件,里面写入下面的内容:
<IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
登入後複製


开启.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错误。求大家帮忙
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板