Проблем с mod_rewrite-страницата не съществува

topchokt

Registered
Проблемът е следният.
Имам страница deleteclient.php, на която подаденото id, трябва да послужи за изтриване на съответният клиент.
Опитвам се с mod_rewrite да направя линка така: deleteclient:id, но постоянно да ми дава следната грешка:

Not Found

The requested URL /deleteclient.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


Това, което съм написал в .htaccess e:
Код:
RewriteRule ^deleteclient:([aA-zZ0-9_-]+)$ /deleteclient.php?id=$1 [L,QSA]
RewriteRule ^deleteclient:([aA-zZ0-9_-]+)/$ /deleteclient.php?id=$1 [L,QSA]

Къде е проблема?
 
Едно време при мен даваше грешка при използването на двоеточие в url-то, но тогава ми даваше E500, така че вероятно не е това, но все пак пробвай с наклонена черта вместо двоеточие.

Също ми се струва, че имаш грешка в []:

RewriteRule ^deleteclient:([aA-zZ0-9_-]+)$ /deleteclient.php?id=$1 [L,QSA]

aA-zZ
Това защо е така? Може би имаш предвид
a-zA-Z
 
Както и да пробвам, винаги ми дава, че страницата deleteclient.php не съществува.

Edit:
Оправих се :)
Направих го така:
Код:
RewriteRule ^deleteclient:(.*)$ deleteclient.php?id=$1 [L,QSA] 
RewriteRule ^deleteclient:(.*)/$ deleteclient.php?id=$1 [L,QSA]
 
Явно проблемът е бил именно в []. Но това, което ползваш в момента е непрепоръчително, защото ще пасне на много неочаквани url-та, например

deleteclient:abc/slash/another/and/even/more/

Обикновено когато в RewriteRule искаш да матчнеш всичко, се пише [^/]+, т.е. всичко без наклонената черта.

+ понеже използваш *, твоето RewriteRule ще матчне и

deleteclient:

, докато ти очакваш да получиш някакъв параметър. Затова е по-добре да използваш +, вместо *, което ще матчне поне един символ:

RewriteRule ^deleteclient:([^/]+)$ deleteclient.php?id=$1 [L,QSA]
RewriteRule ^deleteclient:([^/]+)/$ deleteclient.php?id=$1 [L,QSA]
[/b]
 
Да, прав си.
Благодаря ти, много за помощта.
Човек винаги има какво да научи.
Благодаря :).
 

Back
Горе