【发布时间】:2021-04-05 12:22:55
【问题描述】:
我正在努力重写这个网址
http://localhost/sitecms/?search=viewPage&pageId=1
到
http://localhost/sitecms/pages/page/1
注意在 index.php 顶部声明的变量“搜索”,在 index.php 中声明为函数的 viewPage 接收 pageId 变量,并与相关数据一起传递给另一个文件夹(模板)内的 viewPage.php。
下面是我的.htaccess 代码。
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^pages/([^/]+)/?$ ?search=viewPage&pageId=$1 [L]
它不工作。
非常欢迎对我错过的内容提出建议。
【问题讨论】:
-
您能否确认一下您是否在浏览器中点击了
http://localhost/sitecms/?search=viewPage&pageId=1,并且您希望它在浏览器中重定向到http://localhost/sitecms/pages/page/1? -
@RavinderSingh13 谢谢。不重定向到任何位置。只需重写 url。
-
.htaccess 文件的位置在哪里?
-
"rewrite this URL
http://localhost/sitecms/?search=viewPage&pageId=1TOhttp://localhost/sitecms/pages/page/1" - 反过来,你是从/sitecms/pages/page/1“重写”到/sitecms/?search=viewPage&pageId=1。但是,/sitecms/?search=viewPage&pageId=1严格来说不是一个有效的端点,因为它需要进一步的重写/子请求才能工作。处理请求的实际文件是什么? -
@MrWhite 谢谢。实际文件是 index.php 作为控制器,其中 viewPage 声明为接受页面 id 并将相关数据发送到模板文件的函数。
标签: apache .htaccess redirect mod-rewrite url-rewriting