繁体   English   中英

使用.htaccess进行平面URL重写

[英]Flat URL Rewriting using .htaccess

我正在尝试缩短我的以下网址

 www.domain.com/index_1.php?var=value
 www.domain.com/index_2.php?name=value

 www.domain.com/value
 www.domain.com/name/value

我到底是什么

 www.domian.com                    // This should reach index_1.php
 www.domain.com/value              // This should reach index_1.php
 www.domain.com/name               // This should reach index_2.php
 www.domain.com/name/value         // This should reach index_2.php
 www.domain.com/name/              // The last slash should be omitted and redirect to "www.domain.com/name"

“值”范围可以包含[0-9] [AZ] [az] [-] [_]

我已经尝试遵循.htaccess代码,

 Options +FollowSymlinks
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule (^name?$)|(^name/([^/]+)/?$) /index_2.php?name=$1 [L]
 RewriteRule ^([^/][^(name)]+)/?$ /index_1.php?var=$1 [L]

当我键入

 www.domian.com                    // It Works.
 www.domain.com/value              // It shows "404 Page Not Found".
 www.domain.com/name               // It works.
 www.domain.com/name/value         // It works.
 www.domain.com/name/              // It shows "404 Page Not Found".

如果可以使用PHP完成,请回答。

您必须区分www.domain.com/namewww.domain.com/value

否则,您可以使用PHP来完成此操作。

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

# For www.domain.com/value
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ index.php?var=$1 [L,QSA]

# For www.domain.com/name/value
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w-]+)/([\w-]+)/?$ index_2.php?$1=$2 [L,QSA]

在index.php中:

if(isset($_GET["var"])) {
  $value = $_GET["var"];
  if($value == "name"){
    include"index_2.php";  
  }else{
    include"index_1.php";
  }
}else{
  include"index_1.php";
}

您可以使用:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

# For www.domain.com/value
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ index_1.php?var=$1 [L,QSA]

# For www.domain.com/name/value
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/?$ index_2.php?$1=$2 [L,QSA]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM