Php 如何设置虚拟URL

Php 如何设置虚拟URL,php,html,apache,Php,Html,Apache,可能重复: 如何像典型的CMS框架一样设置虚拟URL?有好的教程或代码库吗?据我所知,它会将所有请求重新路由到index.php,Apache会进行某种mod_重写。不过我不完全确定。如何开始设置这样的框架?您对mod_重写的理解是正确的,这里有一些关于这个问题的好教程,它还涉及到.htaccess文件的各种其他用途 您应该在Apache中启用mod_rewrite 将所有请求重新路由到index.php是正确的 完成所有这些操作后,.htaccess文件应包含以下内容: RewriteEn

可能重复:


如何像典型的CMS框架一样设置虚拟URL?有好的教程或代码库吗?据我所知,它会将所有请求重新路由到index.php,Apache会进行某种mod_重写。不过我不完全确定。如何开始设置这样的框架?

您对mod_重写的理解是正确的,这里有一些关于这个问题的好教程,它还涉及到.htaccess文件的各种其他用途


您应该在Apache中启用mod_rewrite

将所有请求重新路由到index.php是正确的

完成所有这些操作后,.htaccess文件应包含以下内容:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
这基本上告诉所有请求转到index.php

我建议检查一下现有的框架,比如CodeIgniter,了解它们是如何实现的,然后实现自己的框架。

看看symfony是如何实现的(就模块重写而言)


检查PHP部分的一些方法。

没有必要将所有请求发送到
index.PHP
。当然,所谓“全部”,我的意思是排除图像和其他内容,如我的htaccess示例代码。当然。但是你所建议的是一个URL重定向的极端情况。在许多情况下,为应用程序的不同部分制定几个重写规则更有意义。是的,这正是我的建议。这不是大多数MVC都在做的事情吗?为什么那么糟糕?+1因为我不知道为什么它被否决了。完全合理的答案,国际海事组织。