Php 使用.htaccess中的参数重写URL
我已经从谷歌搜索了很多相关的教程等来自己解决这个问题,但运气不佳。因此,我在这里问。我试图通过重写来“美化”我的项目URL。我不确定这些都是可以实现的,因为我刚刚开始思考这个问题 我正在处理localhost项目文件夹localhost/example上的“example”。文件“.htaccess”位于该文件夹中。在这里,我设置了以下内容:Php 使用.htaccess中的参数重写URL,php,html,.htaccess,url-rewriting,Php,Html,.htaccess,Url Rewriting,我已经从谷歌搜索了很多相关的教程等来自己解决这个问题,但运气不佳。因此,我在这里问。我试图通过重写来“美化”我的项目URL。我不确定这些都是可以实现的,因为我刚刚开始思考这个问题 我正在处理localhost项目文件夹localhost/example上的“example”。文件“.htaccess”位于该文件夹中。在这里,我设置了以下内容: RewriteEngine On RewriteBase /example 因此,基本上我的应用程序现在生成一个URL,该URL始终至少包含一个参数和
RewriteEngine On
RewriteBase /example
因此,基本上我的应用程序现在生成一个URL,该URL始终至少包含一个参数和另一个指向当前位置的参数
当前URL:localhost/example/admin.php?e=2&p=frontpage
幻想:localhost/example/admin/2/frontpage
关于参数:
- p代表所选页面
- e代表事件
With the added
RewriteRule ^admin.php/(.*)$ /admin.php?e=$1 [L,QSA]
I am getting lot of pathing errors, whole site is without styling and js files.
编辑2:
RewriteEngine On
RewriteBase /example
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /admin.php/e=?(.*)$/p=?(.*)$ /admin.php?e=$1?p=$2 [L,QSA]
Now urls are following:
http://localhost/example/admin.php/2/inc/vex/vex.css
http://localhost/example/admin.php/2/css/modestgrid.css
It is not showing the page in url and the paths are not correct.
They should be http://localhost/example/admin.php/css/modestgrid.css
你的问题有点模糊、矛盾,也不清楚你到底想如何处理(参考)你的资产文件。但总的来说,我认为这应该是让你走下去的起点:
RewriteEngine On
RewriteBase /example
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/(.*)$ $1.php?e=$2&p=$3 [END]
为了实现这一点,您显然需要安装和加载apache重写模块,您需要注意启用动态配置文件的解释(AllowOverride
指令),并且必须将该文件放置在正确的位置,并具有http服务器进程的读取权限
如果您得到一个内部服务器错误(http状态500),那么很可能您操作的是非常旧版本的apache http服务器。在这种情况下,您可能需要将[END]
标志替换为[L]
标志,该标志可能也适用于此处。在这种情况下,您将在http服务器错误日志文件中找到一个提示
还有一个一般提示:您应该始终希望将此类规则放置在http服务器(虚拟)主机配置中,而不是使用动态配置文件(
.htaccess
样式文件)。这些文件是出了名的容易出错,难以调试,而且它们确实降低了服务器的速度。只有在您无法控制主机配置的情况下(读:非常便宜的主机服务提供商),或者如果您的应用程序依赖于编写自己的重写规则(这显然是一个安全噩梦),才支持将它们作为最后一个选项.?e=2&p=settings
是您应该期望和处理的请求参数的形式,因为它更简单,php将在$\u GET
中保存单独的值,您不必自己解析。关于一般重写:当然这是可能的,这是重写的绝对标准。使用RewriteRule ^admin.php/(.*)$/admin.php?e=$1[L,QSA],我在Chrome控制台中遇到了很多错误。它们看起来像是路径错误,因为整个页面刚刚丢失了所有样式和js文件。这可能意味着您对资产文件的引用被破坏,但这与您如何指定参数无关。可能是你不小心也重写了那些引用…我不知道我在做什么。