【问题标题】:.htaccess rule redirect all pages except a few provided ones.htaccess 规则重定向所有页面,除了少数提供的页面
【发布时间】:2012-10-03 13:57:54
【问题描述】:

我有以下 .htaccess 文件。

ErrorDocument 404 /404.php


RewriteRule ^aanbiedinginformatie$ aanbiedinginformatie.php
RewriteRule ^algemenevoorwaarden$ algemenevoorwaarden.php

RewriteRule ^contact$ contact.php
RewriteRule ^disclaimer$ disclaimer.php
RewriteRule ^faq$ faq.php
RewriteRule ^index$ index.php
RewriteRule ^informatie$ informatie.php
RewriteRule ^inloggen-bedrijven$ inloggen-bedrijven.php
RewriteRule ^inloggen-consument$ inloggen-consument.php
RewriteRule ^nieuws$ nieuws.php
RewriteRule ^(.*)-nieuws$ bekijknieuws.php?id=$1
RewriteRule ^(.*)-(.*)-persbericht$ persbericht.php?id=$1&bedrijf=$2
RewriteRule ^persberichteninformatie$ persberichteninformatie.php
RewriteRule ^privacy$ privacy.php
RewriteRule ^registreren-bedrijven$ registreren-bedrijven.php
RewriteRule ^registreren-bedrijven-stap-2$ registreren-bedrijven-stap-2.php
RewriteRule ^registreren-bedrijven-stap-3$ registreren-bedrijven-stap-3.php
RewriteRule ^registreren-bedrijven-stap-4$ registreren-bedrijven-stap-4.php
RewriteRule ^registreren-bedrijven-stap-5$ registreren-bedrijven-stap-5.php
RewriteRule ^registreren-consument$ registreren-consument.php
RewriteRule ^vacatureinformatie$ vacatureinformatie.php
RewriteRule ^(.*)-vacatures$ vacatures.php?id=$1

RewriteRule ^zoeken-op-(.*)$ zoeken.php?query=$1
RewriteRule ^zoeken-in-(.*)$ zoeken.php?plaats=$1
RewriteRule ^zoeken-q-(.*)-in-(.*)$ zoeken.php?query=$1&plaats=$2

RewriteRule ^(.*)-vacatures-zoeken$ zoekenvac.php?query=$1
RewriteRule ^(.*)-in-(.*)-vacatures$ zoekenvac.php?query=$1&plaats=$2
RewriteRule ^vacatures-in-(.*)$ zoekenvac.php?plaats=$1 

RewriteRule ^(.*)-aanbiedingen$ zoekenaan.php?query=$1
RewriteRule ^(.*)-aanbiedingen-in-(.*)$ zoekenaan.php?query=$1&plaats=$2
RewriteRule ^aanbiedingen-in-(.*)$ zoekenaan.php?plaats=$1

RewriteRule ^(.*)-persberichten$ zoekenpers.php?query=$1
RewriteRule ^persberichten-in-(.*)$ zoekenpers.php?plaats=$1
RewriteRule ^(.*)-persberichten-in-(.*)$ zoekenpers.php?query=$1&plaats=$2

RewriteRule ^bedrijven-in-(.*)$ zoeken.php?plaats=$1

RewriteRule ^control/consument$ control/consument.php
RewriteRule ^control/consument-mijngegevens$ control/consument-mijngegevens.php
RewriteRule ^control/consument-wachtwoord$ control/consument-wachtwoord.php
RewriteRule ^control/consument-cv$ control/consument-cv.php
RewriteRule ^control/consument-reacties$ control/consument-reacties.php
RewriteRule ^control/consument-reviews$ control/consument-reviews.php
RewriteRule ^control/logout$ control/logout.php

RewriteRule ^control/bedrijven$ control/bedrijven.php
RewriteRule ^control/bedrijven-aanbieding$ control/bedrijven-aanbieding.php
RewriteRule ^control/bedrijven-facturen$ control/bedrijven-facturen.php
RewriteRule ^control/bedrijven-fotos$ control/bedrijven-fotos.php
RewriteRule ^control/bedrijven-kortingscode$ control/bedrijven-kortingscode.php
RewriteRule ^control/bedrijven-kortingscode-bewerken-(.*)$ control/bedrijven-    kortingscode-bewerken.php?id=$1
RewriteRule ^control/bedrijven-kortingscode-verwijderen-(.*)$ control/bedrijven-    kortingscode-verwijderen.php?id=$1
RewriteRule ^control/bedrijven-wachtwoord$ control/bedrijven-wachtwoord.php
RewriteRule ^control/bedrijven-pakket$ control/bedrijven-pakket.php
RewriteRule ^control/bedrijven-persbericht$ control/bedrijven-persbericht.php
RewriteRule ^control/bedrijven-persbericht-bewerken-(.*)$ control/bedrijven-   persbericht-bewerken.php?id=$1
RewriteRule ^control/bedrijven-persbericht-verwijderen-(.*)$ control/bedrijven- persbericht-verwijderen.php?id=$1
RewriteRule ^control/bedrijven-profiel$ control/bedrijven-profiel.php
RewriteRule ^control/bedrijven-vacatures$ control/bedrijven-vacatures.php
RewriteRule ^control/bedrijven-vacatures-bekijk-(.*)$ control/bedrijven-vacatures- bekijk.php?id=$1
RewriteRule ^control/bedrijven-vacatures-bewerken-(.*)$ control/bedrijven-vacatures-   bewerken.php?id=$1
RewriteRule ^control/bedrijven-vacatures-verwijderen-(.*)$ control/bedrijven-vacatures-verwijderen.php?id=$1
RewriteRule ^control/logoutb$ control/logoutb.php

RewriteRule ^(.*)$ bedrijf.php?q=$1 [L]

RewriteRule ^id(.*)-(.*)$ bedrijf.php?id=$1
RewriteRule ^branche(.*)-(.*)$ zoekenbranche.php?id=$1

我想要的是,除了上面提供的 URL 之外的所有 URL 都将重定向到 bedrijf.php?q=$1。我试过排除,但不起作用。

所以 www.site.com/companyname 将重定向到 bedrijf.php?q=companyname,而 www.site.com/contact 将重定向到 contact.php

我该怎么做?

【问题讨论】:

  • 乍一看,在我看来,您的所有规则都需要[L] 标志,以便在规则匹配后停止执行。
  • @ClaudioRedi 我在所有规则中添加了 [L],但现在没有任何效果了。我立即被重定向到 bedrijf.php

标签: .htaccess


【解决方案1】:

重写规则循环。整套规则不断地重新应用于 URI,直到 URI 停止更改。你的规则在这里:

RewriteRule ^(.*)$ bedrijf.php?q=$1 [L]

没有条件阻止以前重写的 URI 被重写为 bedrijf.php,因为 (.*) 匹配所有内容。

尝试添加一些条件,例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ bedrijf.php?q=$1 [L]

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(.*)$ bedrijf.php?q=$1 [L]

【讨论】:

  • RewriteCond %{REQUEST_FILENAME} !-f 解决了部分问题!但是,正如您所看到的,还有一些文件名不同的重写规则。那我该如何解决呢?
  • 哦等等!看来这就是我的问题的解决方案!
猜你喜欢
  • 2012-10-29
  • 2016-11-08
  • 1970-01-01
  • 2017-06-30
  • 2016-11-30
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多