【问题标题】:Configuring htaccess for url rewriting为 url 重写配置 htaccess
【发布时间】: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=1 TO http://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


【解决方案1】:

对于您显示的示例,您能否尝试以下操作。 请在测试您的 URL 之前清除您的浏览器缓存。

Options +FollowSymLinks
Options -MultiViews
RewriteEngine ON
##This rule redirects from http://localhost/sitecms/?search=viewPage&pageId=1 TO http://localhost/sitecms/pages/page/1
RewriteCond %{THE_REQUEST} \s/(sitecms)/\?search=viewPage&pageId=(\d+) [NC]
RewriteRule ^ /%1/pages/page/%2? [R=301,NE,L]

##Rules for handling non-existing files/directories.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(sitecms)/(?:[^/]*)/(?:[^/]*)/(\d+)/?$ $1/?search=viewPage&PageId=$2 [NC,L]

【讨论】:

  • 不错的解决方案 +1,虽然看起来你有一个(错字)错误的斜线...... \s\(sitecms) 应该是 \s(/sitecms) (或 \s/(sitecms) 并包括一个斜线前缀RewriteRule 替换)。
  • @RavinderSingh 我的浏览器显示 500 内部服务器错误。
  • @MrWhite,感谢您的告知,这是一个很棒的问题,我现在已经修复了,欢呼:)
  • @hossain 该规则应该按预期工作。尝试清除浏览器缓存或尝试使用其他浏览器来测试重定向。
  • 这确实假定.htaccess 文件被放置在文档根目录中。但是,OP 在问题中发布的指令表明他们将 .htaccess 文件放在 /sitecms 子目录中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
相关资源
最近更新 更多