У меня есть URL, который иногда имеет один или несколько параметров, и я хочу иметь возможность переписать соответственно.
URL-адреса следующие:
/index.php?pagetitle=Home
Мне удалось получить этот URL, чтобы отобразить, как я хочу, используя следующее:
/Home
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([0-9a-zA-Z]+) index.php?pagetitle=$1 [NC,L]
Я также хотел бы иметь возможность иметь тот же URL, но с идентификатором статьи
.com/index.php?pagetitle=Home&articleid=20
который я хотел бы отобразить так:
.com/Home/20
Но я не могу понять, как заставить его работать более чем с одним параметром.
ОБНОВИТЬ:
Хорошо, так что мне удалось заставить работать ниже:
index.php? PAGETITLE = $ 1&ArticleID = $ 2
Который отображается как:
.com / Главная / 20
Я попытался сделать еще один шаг и использовать название статьи, а также следующее правило:
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))(?:/([0-9]*))?/?$ index.php?pagetitle=$1&articletitle=$2&articleid=$3 [NC,L,QSA]
Так будет отображаться как:
.com / Главная / ArticleTitle / 20
Но он не хочет работать на меня, кто-нибудь знает, что я делаю неправильно, и еще раз спасибо заранее.
http://karpium.co.uk/Home/Baits/20 — Этот URL работает
http://karpium.co.uk/Home — Но этот URL-адрес не работает, где, как и при использовании Pagetitle = и articleid =
Вы можете использовать следующее правило:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9]*))?/?$ index.php?pagetitle=$1&articleid=$2 [NC,L,QSA]
Итак, похоже, что я исправил это с помощью 3 различных правил переписывания, которые заключаются в следующем:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([0-9a-zA-Z]+)$ index.php?pagetitle=$1 [NC,L,QSA]
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))?/?$ index.php?pagetitle=$1&articletitle=$2 [NC,L,QSA]
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))(?:/([0-9]*))?/?$ index.php?pagetitle=$1&articletitle=$2&articleid=$3 [NC,L,QSA]
Если бы кто-нибудь мог пролить некоторый свет на несколько частей регулярного выражения для меня, это было бы очень ценно:
Что означает следующее?
?: /
?/?
Еще раз спасибо всем за помощь 🙂