Я хочу иметь отформатированный URL-адрес, например:
www.mysite.com/view.php?id=1
, где:
"id" range: 1-99 (without leading "0" from 1 to 9)
"id": always lowercase, no "Id" or "ID" or "iD"
Все, что отличается от этого формата, должно перенаправлять его на www.mysite.com/view.php или отформатированный ID
значение:
Примеры:
www.mysite.com/view.php?id=1sdeW --> www.mysite.com/view.php?id=1
www.mysite.com/view.php?erwrrw34 --> www.mysite.com/view.php
www.mysite.com/view.php?id=01 --> www.mysite.com/view.php?id=1
www.mysite.com/view.php?ID=33 --> www.mysite.com/view.php?id=33
Я уже сделал некоторую часть этой логики ( RegExp , htaccess , rewriterules ):
Пожалуйста, помогите завершить полную логику выше.
RewriteEngine On
RewriteCond %{QUERY_STRING} ID=([0-9]+)
RewriteRule ^(.*)$ /view.php?id=%1 [R=301,L]
РЕДАКТИРОВАТЬ # 1
Я упростила свой подход для достижения тех же результатов:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/view.php$
RewriteCond %{QUERY_STRING} ^(?!(id=[1-9][0-9]{0,1})$).*$
RewriteRule .* ? [R=301,L]
1) С помощью:
RewriteRule .* ? [R=301,L]
Это работает, но ссылка, размещенная внутри моей веб-страницы на:
www.mysite.com/view.php
также перенаправляет на:
www.mysite.com
2) С помощью:
RewriteRule .* /view.php? [R=301,L]
Я получаю хорошо известную петлю "СЛИШКОМ МНОГИЕ НАПРАВЛЕНИЯ".
Как мне от этого избавиться?