• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP的URL问题

php 搞代码 4年前 (2022-01-23) 14次浏览 已收录 0个评论
文章目录[隐藏]

大家好。我有个问题: 我的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<mark style="color:transparent">来4源gaodaimacom搞#代%码*网</mark><code>搞代gaodaima码</code> [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.gaodaima.com/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.gaodaima.com/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.gaodaima.com/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错误。求大家帮忙


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP的URL问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址