【问题标题】:.HTACCESS URL Format Rewrite.HTACCESS URL 格式重写
【发布时间】:2017-08-22 15:54:58
【问题描述】:

有没有办法让我像这样制作一种通用 URL:

/News?Today
/News?Archive

/News?703
/News?654
/News?308 (and so on)

代替:

/News?which=Today
/News?which=Archive

/News?which=703
/News?which=654
/News?which=308 (and so on)

一位朋友给了我以下建议,虽然他不确定这是不是正确的 htaccess 命令:

RewriteRule /News?Today /News.php?which=Today

【问题讨论】:

  • 您需要使用 rewritecond 来查看查询字符串,它不是第一个参数比较的一部分。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

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

DirectoryIndex Ena.php

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ Ena.php?open=$1 [L,QSA]

RewriteCond %{QUERY_STRING} ^([^=]+)$ 
RewriteRule ^/?$ Ena.php?open=%1 [L]

【讨论】:

  • 我还不能测试你的解决方案;我会在接下来的几天里,所以我会不断更新这个问题。
  • 是的,我现在也尝试了您的解决方案。它一直表现得像另一个。这是正常行为吗?
  • 抱歉,您需要提供更多详细信息。您使用什么 URL 进行测试,遇到了什么错误?
  • 我没有收到任何错误; example.com/?Service 加载主页,而不是服务页面。
【解决方案2】:

未测试:

RewriteRule ^/News?(.*)$ /News.php?which=$1 [L,QSA]

整件事:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^/News?(.*)$ /News.php?which=$1 [L,QSA]
</IfModule>

【讨论】:

  • ifmodule 标签在共享主机服务器上是多余的。
  • 好的,所以... ...我使用此命令 (RewriteRule ^/News?(.*)$ /News.php?which=$1 [L,QSA]) 并将其更改为 RewriteRule ^/Ena?(.*)$ /Ena.php?open=$1 [L,QSA] 并将 DirectoryIndex 放入 Ena.php 以便我可以加载像 @ 这样的页面987654325@、/?Prices 等等。现在,它很好地加载了默认页面,但不会加载任何其他页面,id est:当我输入 /?Services 时——它加载的是默认页面,而不是相应的页面。帮忙?
  • rewriterule 与查询字符串不匹配。
猜你喜欢
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2014-05-29
  • 2011-08-30
  • 2011-03-19
  • 2022-01-18
  • 2014-04-27
  • 2023-04-07
相关资源
最近更新 更多