【发布时间】:2017-07-21 16:00:10
【问题描述】:
我一直在从谷歌搜索很多相关的教程等,以自己解决这个问题,但运气为零。所以我在这里问。我正在尝试通过重写来'美化'我的项目 URL。我不确定这些是否都能实现,因为我刚刚开始了解这个主题。
我正在本地项目文件夹 localhost/example 上工作 'example'。文件 '.htaccess' 位于该文件夹中。我设置了以下内容:
RewriteEngine On
RewriteBase /example
所以基本上我的应用程序现在始终生成一个至少包含 1 个参数和另一个指向当前位置的 URL。
当前网址:localhost/example/admin.php?e=2&p=frontpage
幻想:localhost/example/admin/2/frontpage
关于参数:
- p 代表选中页面
- e 代表事件
好吧,让我们认为这一切都很容易实现,我是否必须更改所有属性以匹配当前显示的 url?
现在他们是: href="?e=2&p=settings"
他们应该是: href="2/settings" ?
我正在检查 GET 参数 P 的值,然后将该页面包含到内容区域中。
差不多就是这样,对我来说太复杂了,但出于教育目的,我真的很想彻头彻尾地理解这一点。谢谢。
编辑:
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
【问题讨论】:
-
?e=2&p=settings是您应该期望和处理的请求参数的形式,因为它更容易,php 已经在$_GET中保存了单独的值,您不必自己解析。关于一般重写:当然可以,这是重写的绝对标准。 -
使用 RewriteRule ^admin.php/(.*)$ /admin.php?e=$1 [L,QSA] 我在 Chrome 控制台中遇到很多错误。它们看起来像路径错误,因为整个页面刚刚丢失了所有样式和 js 文件。
-
这可能意味着您对资产文件的引用已损坏,但这与您如何指定参数无关。可能是您不小心也重写了这些引用...
-
我不知道自己在做什么。
标签: php html .htaccess url-rewriting