PHP的URL问题

WBOY
Release: 2016-06-23 13:50:15
Original
918 people have browsed it

大家好。我有个问题: 我的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>
Copy after login
Copy after login

你需要写一条伪静态的规则把你的期望的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>
Copy after login
Copy after login



我在根目录下.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>
Copy after login


开启.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错误。求大家帮忙
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!