【问题标题】:I am trying to achieve a directory URL using parameters with htaccess我正在尝试使用带有 htaccess 的参数来实现目录 URL
【发布时间】:2021-09-05 11:23:53
【问题描述】:

我想在我的网站上显示某些内容。我根据 URL 参数选择内容,例如 page=about。这很好用,我的 URL 看起来像 example.com/mysite/index.php?page=about。我的问题是我希望我的 URL 读取 example.com/mysite/about,其中最后一部分是页面参数的名称。

我正在尝试通过 htaccess 执行此操作。这是我的确切代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

我的页面和 URL 结构都没有变化。 URL 仍为 ...index.php?page=about。难道我做错了什么?我尝试了很多不同的方法,但仍然得到相同的结果。我也尝试过简单地这样做,没有任何变化:

RewriteEngine On
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ index.php?page=$1 [NC]

我认为它不起作用,所以我尝试重定向到其他网站并且它起作用了。因此,htaccess 文件正在被读取并能够运行。

任何帮助都会有所帮助!

谢谢你, 血压

【问题讨论】:

  • mod_rewrite 在这里的工作是在内部重写到达服务器的请求。首先更改 HTML 代码中的链接指向的内容 - 这仍然是您的责任。

标签: php .htaccess url redirect structure


【解决方案1】:

您可以在站点根目录 .htaccess 中使用这 2 条规则:

RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+(mysite)/index\.php\?page=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=302,L,NE]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/mysite/([^/]+)/?$ [NC]
RewriteRule ^ index.php?page=%1 [L,QSA]

【讨论】:

  • 谢谢,但我刚试了一下,我的网站显示 URL 结构没有变化。当然,我用我的实际站点替换了“mysite”,但它仍然不起作用。知道为什么吗?
  • 您在浏览器中输入的完整网址是什么?
  • 没关系!!这非常有效。我撤回我的评论。 :) 非常感谢。我只需要对要访问的 URL 进行调整即可正常运行。
  • 谢谢,这段代码运行良好。我现在正试图在其中放置一个目录结构,这样“page=about&dir=category”将产生“/category/page”。我是 HTACCESS 的新手,在添加额外的参数时遇到了一些困难。如果您能提供任何帮助,我将不胜感激。
  • @BDP:请使用示例打开一个新问题,您将获得帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 2015-06-06
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
相关资源
最近更新 更多