htaccess通配符重定向到查询字符串

时间:2012-07-29 18:37:04

标签: .htaccess

快速提问,我已经看过它问了好几百次,但我似乎无法让它起作用(对我感到羞耻)。

我正在尝试将除index.php以外的任何内容重定向到view.php?id = $ 1,其中$ 1不是index.php - 但我似乎无法让它工作。

例如:

http://domain.com/应该使用index.php
http://domain.com/index.php应该这样 但..
http://domain.com/sdgoi3应使用http://domain.com/view.php?id=sdgoi3

我已经尝试了一些事情,然后解决了上述问题,但无济于事。

有人有解决方案吗?赞赏。

2 个答案:

答案 0 :(得分:1)

尝试将其放入文档根目录中的htaccess文件中:

RewriteEngine On
RewriteRule ^$ /index.php [L]
RewriteRule ^index\.php - [L]
RewriteRule ^view\.php - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /view.php?id=$1 [L]

这里的逻辑是:

  1. 如果请求URI是/重写为index.php
  2. 如果请求URI以index.php开头,请不要更改并通过
  3. 如果请求URI以view.php开头,请不要更改并通过
  4. 如果请求是针对不存在的文件或目录,请使用id param传递给view.php

答案 1 :(得分:0)

可能是这样的:

RewriteCond %{REQUEST_URI} !^index\.php
RewriteCond %{REQUEST_URI} !^view\.php
RewriteRule ^(.*)$ view.php?id=$1 [L]