Я пытаюсь сократить свой следующий URL-адрес
Из
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/name и www.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]
www.domain.com/value
должен указывать на index_1.php
и www.domain.com/name
должны указывать на index_2.php
. Ваши правила нарушаются при этом!
www.domain.com/value
иwww.domain.com/name
имеют одно и то же регулярное выражение. вам нужно что-то, чтобы мы могли отличить их друг от друга