Правило htaccess для нескольких необязательных параметров и параметров запроса по умолчанию

У меня есть следующие правила htaccess:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^licitatii/([^/]*)/([^/]*)/?$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^licitatii/([^/]*)/?$ licitatii.php?orderBy=$1&orderByType=asc [NC,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^licitatii licitatii.php?orderBy=licitatii_date&orderByType=asc [NC,L,QSA]

И когда я использую тег привязки, как это

<a href="/licitatii/licitatii_date/asc">Click</a>

ничего не происходит с параметрами запроса и с URL.

Редактировать:
Я не получаю 404, но после перехода на этот URL-адрес / licitatii / licitatii-date / asc / я получаю это
введите описание изображения здесь

вместо этого

введите описание изображения здесь

Таким образом, URL-адрес изменен, но нет предоставленного вывода, и он ведет себя так, как будто я получил доступ к несуществующей странице (правило в htaccess)
И это мой модифицированный файл htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
Options -Indexes
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f

RewriteRule ^cauta/([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-pag([0-9]+)$ cautaLucrare?cautaCategorie=$1&keyWord=$2&cautaDataFrom=$3&cautaDataTo=$4&location=$5&pager=$6 [QSA,L]
#RewriteRule ^cauta/([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-pag([0-9]+)$ cautaLucrare.php?tip_ev=$1&numar_persoane=$2&numar_stele=$3&pager=$4 [QSA,L]RewriteRule ^adauga_anunt1 landings/landing2.php?source=adwordsLanding2 [NC,L,QSA]RewriteRule ^adauga_anunt cumFunctioneaza.php [NC,L,QSA]RewriteRule ^blog/([0-9a-z-/]+)-([0-9]+) blog.php?title=$1&idArt=$2 [NC,L,QSA]RewriteRule ^blog blog.php [NC,L,QSA]RewriteRule ^cont/detalii detalii.php [NC,L,QSA]RewriteRule ^cont/parola-noua parolaNoua.php [NC,L,QSA]RewriteRule ^cont/istoric istoric.php [NC,L,QSA]RewriteRule ^cont/oferte-acceptate oferteAcceptate.php [NC,L,QSA]RewriteRule ^login-fb loginM.php?source=fb [NC,L,QSA]RewriteRule ^adauga-anunt landings/landing1.php?source=adwordsLanding1 [NC,L,QSA]RewriteRule ^login loginM.php [NC,L,QSA]RewriteRule ^facebook loginFB.php [NC,L,QSA]RewriteRule ^cont-activat contActivat.php [NC,L,QSA]RewriteRule ^parola-uitata parolaUitata.php [NC,L,QSA]RewriteRule ^adauga-lucrare adaugaLucrare.php [NC,L,QSA]RewriteRule ^adauga2 adaugaLucrare2.php [NC,L,QSA]RewriteRule ^inregistreaza-prestator inregPrest.php [NC,L,QSA]RewriteRule ^inregistreaza-beneficiar inregBen.php [NC,L,QSA]RewriteRule ^contact contact.php [NC,L,QSA]RewriteRule ^termeni-si-conditii tandc.php [NC,L,QSA]RewriteRule ^despre-noi despre2.php [NC,L,QSA]RewriteRule ^cauta-lucrare cautaLucrare2.php [NC,L,QSA]RewriteRule ^cauta cautaLucrare2.php [NC,L,QSA]RewriteRule ^admin/functii admin.php [NC,L,QSA]RewriteRule ^admin/statistici statistici.php [NC,L,QSA]RewriteRule ^logout logout.php [NC,L,QSA]RewriteRule ^lucrari-active lucrariActive.php [NC,L,QSA]RewriteRule ^cont/lucrari-active2 lucrariActive2.php [NC,L,QSA]

RewriteRule ^licitatii/([^/]+)?/([^/]+)?/$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA]

RewriteRule ^licitatii/([^/]+)?/$ licitatii.php?orderBy=$1 [NC,L,QSA]

RewriteRule ^licitatii licitatii.php [NC,L,QSA]RewriteRule ^contul-meu cont.php [NC,L,QSA]RewriteRule ^cont2 cont2.php [NC,L,QSA]RewriteRule ^cont/mesaj-([0-9]+) mesaj.php?id_mesaj=$1 [NC,L,QSA]RewriteRule ^cont/mesaje-([0-9]+) mesaje.php?pager=$1 [NC,L,QSA]RewriteRule ^cont/mesaje mesaje.php [NC,L,QSA]RewriteRule ^cum-functioneaza cumFunctioneaza.php [NC,L,QSA]RewriteRule ^edit-([0-9]+) editAdd.php?idAnunt=$1 [NC,L,QSA]RewriteRule ^edit-licitatie-([0-9]+) editOff.php?idLic=$1 [NC,L,QSA]RewriteRule ^([0-9a-z-/\)\(!?]+)-([0-9]+) page2.php?anuntTitlu=$1&idAnuntToShow=$2 [NC,L,QSA]

#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^([0-9a-z-/]+)-([0-9]+) cautaLucrare2.php?anuntTitlu=$1&idAnuntToShow=$2 [NC,L,QSA]RewriteRule ^categorii/([0-9a-z-/]+) categories.php?categoryToShow=$1 [NC,L,QSA]

</IfModule>

Позже отредактируйте:
После небольшого исследования, когда я получаю доступ к этому URL licitatii/licitatii-date/asc это соответствует этому правилу:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9a-z-/]+) categories.php?categoryToShow=$1 [NC,L,QSA]

вместо этого правила:

RewriteRule ^licitatii/([a-z-A-Z-0-9-]+)/([^/]+)/?$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA]
RewriteRule ^licitatii/([a-z-A-Z-0-9-]+)/?$ licitatii.php?orderBy=$1 [NC,L,QSA]
RewriteRule ^licitatii/?$ licitatii.php? [NC,L,QSA]

Как я могу предотвратить соответствие вышеуказанному правилу?

Редактировать:
Я получаю 302 после ввода URL. Запрос выглядит следующим образом:

введите описание изображения здесь

-1

Решение

Так с MultiViews выключен, используя якорь в 3-м правиле и используя + квантификатор вместо *:

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^licitatii/([^/]+)/([^/]+)/?$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA]

RewriteRule ^licitatii/([^/]+)/?$ licitatii.php?orderBy=$1&orderByType=asc [NC,L,QSA]

RewriteRule ^licitatii/?$ licitatii.php?orderBy=licitatii_date&orderByType=asc [NC,L,QSA]
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]