【问题标题】:RewriteCond not working properlyRewriteCond 无法正常工作
【发布时间】:2014-10-15 06:34:28
【问题描述】:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/Home_Page/sort/(all|action|romance|thriller|crime|sci-fi)/(1|2|3|4|5)
RewriteRule  ^([A-Za-z-]+)/([A-Za-z0-9-]+)/([0-9])$  kl.php?genre=$2&page_no=$3 [NC] [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/Home_Page/sort/(all|action|romance|thriller|crime|sci-fi) 
RewriteRule  ^([A-Za-z-]+)/([A-Za-z0-9-]+)$  kl.php?genre=$2 [NC] [L]

请求 uri 传递所需的查询字符串

if reruest uri is /Home_Page/sort/(all|action|romance|thriller|crime|sci-fi) rewrite to ^([A-Za-z-]+)/([A-Za-z0-9-]+)$  kl.php/?genre=$2
if request uri is  /Home_Page/sort/(all|action|romance|thriller|crime|sci-fi)/([0-9])$ rewrite to ^([A-Za-z-]+)/([A-Za-z0-9-]+)$  kl.php/?genre=$2&page_no=$3

【问题讨论】:

  • 我有点赶时间。任何建议将不胜感激。提前致谢。
  • 不清楚你到底想要什么。你能再澄清一点吗?
  • 基本上我希望 index.php/?type=this&how_much=x 显示为 domain/type/how_much
  • 还有thisx这样的参数值?
  • this = 一些字符串和 x = 常量值,例如。域/可乐/23

标签: regex apache .htaccess mod-rewrite redirect


【解决方案1】:

您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} /index\.php\?genre=([^\s&]+)&page_no=([^\s&]+) [NC]
RewriteRule ^ homepage/%1/%2? [R=302,L]

RewriteRule ^homepage/([^/]+)/([0-9]+)/?$ index.php?genre=$1$page_no=$2 [L,QSA,NC]

【讨论】:

  • 重写规则 ^sort/([^/]+)/([0-9]+)/?$ index.php?genre=$1$page_no=$2 [L,QSA,NC]
  • 仍然在浏览器上显示 index.php]
  • 实际上我在这两个规则之上还有一个重写规则。这是否会干扰,因为它们是相关的。
  • 这个sort 来自哪里?当我要求您编写所有示例并且您评论了 request uri: domain/homepage/action/5 时,除非您在问题中写下每个案例,否则我无法理解您的所有要求。
  • 我也做了 RewriteBase /Home_page/ 所以我不必每次都在规则中包含主页
【解决方案2】:
RewriteEngine On
RewriteBase /Home_Page/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/Home_Page/sort/(all|action|romance|thriller|crime|sci-fi)$
RewriteRule  ^([A-Za-z-]+)/([A-Za-z0-9-]+)$  kl.php?genre=$2 [NC] [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/Home_Page/sort/(all|action|romance|thriller|crime|sci-fi)/([0-9]+)$
RewriteRule ^sort/([^/]+)/([0-9]+)/?$ index.php?genre=$1$page_no=$2 [L,QSA,NC]

【讨论】:

  • 不作为答案,请点击您的问题下方的edit 链接并在此处提供这些规则。
  • 还有:/sort/sci-fi/1 有效,但 /sort/action/1 无效
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 2016-09-01
  • 2012-07-11
  • 2018-04-08
  • 2017-04-20
  • 2018-10-02
  • 2016-09-04
  • 2010-10-06
相关资源
最近更新 更多