【问题标题】:.htaccess rewriteRule (./index.php?page=projects&id=$1).htaccess rewriteRule (./index.php?page=projects&id=$1)
【发布时间】:2014-10-03 23:50:12
【问题描述】:

我正在尝试使用 htaccess 重写 URL,但我有一些问题希望您能帮助我。

这是我的 .htaccess 文件的内容

RewriteEngine On  

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  

RewriteRule ^(.*)$ ./index.php?page=projects&id=$1

以下规则效果很好,它转换了这个网址:

peterboruplund.dk/?page=projects&id=projectname

到这里

peterboruplund.dk/projectname

但问题是我也希望能够只查看一个页面。就像我写这个网址一样:

peterboruplund.dk/?page=info

它应该转到名为“info”的页面,如下所示:

peterboruplund.dk/info

我的问题是如何同时实现这两件事?

最好的,彼得

【问题讨论】:

  • peterboruplund.dk/info - 这是物理路径吗?
  • 动态路径...

标签: apache .htaccess url mod-rewrite short


【解决方案1】:

您可以为/info 设置另一个规则:

RewriteEngine On  

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?page=$1 [L,QSA,NC]

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^(.+)$ index.php?page=projects&id=$1 [L,QSA]

【讨论】:

  • 太棒了!...这很好用,谢谢:)...但是是否可以使“信息”的规则动态化,因此当您编写任何页面名称时,它都会转到它,如果存在?
  • 但是如何判断一个页面是否/abcd 存在于重写规则中,因为一切都将转到 /?page=abcd
  • 另外,如果它适合您,您可以通过单击我的答案左上角的勾号将答案标记为已接受。
  • 好的,但是他们是一种让您可以将任何内容写成页面而不仅仅是“信息”的方法吗?它不应该检查页面是否存在
  • ok 检查更新的答案,它还会将任何/abcd URI 重写为/?page=abcd
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多