Чистый URL в CakePHP

Мне нужна помощь с чистым URL в CakePHP. Я пытался какое-то время безуспешно.

Это существующий htaccess


    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

Это URL-адрес, который я пытаюсь очистить:

http://example.com/signup/?key=dT33Y%2FeKXCjgeo69XpTs39YV%2F4ZnHht0M5E%2BXk9iDKQ%3D

Я хотел бы, чтобы URL-адрес выглядел так:

http://example.com/signup/dT33Y%2FeKXCjgeo69XpTs39YV%2F4ZnHht0M5E%2BXk9iDKQ%3D

Пожалуйста помоги. Спасибо!


person DeFeNdog    schedule 21.01.2014    source источник


Ответы (1)


Попробуйте этот код в /signup/.htaccess:

RewriteEngine On

RewriteCond %{THE_REQUEST} /signup/\?key=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?key=$2 [L,QSA]
person anubhava    schedule 21.01.2014
comment
Кажется, это не работает. Я все еще получаю тот же URL. Может быть, я обновляю не тот htaccess? Я редактирую один в /app/webroot/. - person DeFeNdog; 21.01.2014
comment
Хорошо, попробуйте этот обновленный код. signup обслуживается cakephp? - person anubhava; 21.01.2014
comment
Да, регистрация обслуживается cakephp. У меня есть контроллер и представление для этого каталога. Все равно не повезло :/ - person DeFeNdog; 21.01.2014
comment
Значит, вы по-прежнему можете без проблем получить доступ к http://example.com/signup/?key=dT33Y%2FeKXCjgeo69XpTs39YV%2F4ZnHht0M5E%2BXk9iDKQ%3D? - person anubhava; 21.01.2014
comment
Да, я могу легко добраться до этого URL. - person DeFeNdog; 22.01.2014
comment
Все равно не повезло. Обновленный код дал mehttp://example.com/home1/myuser/public_html/demo/app/webroot/signup/0lj%2FK5aRN%2FqfcMbM%2B8VY3q%2B0%2FmFO4L09HHjKa50pim8%3D. После изменения THE_REQUEST на HTTP_HOST я все еще получал http://example.com/signup/?key=dT33Y%2FeKXCjgeo69XpTs39YV%2F4ZnHht0M5E%2BXk9iDKQ%3D - person DeFeNdog; 22.01.2014
comment
Я все еще вижу http://example.com/signup/?key=dT33Y%2FeKXCjgeo69XpTs39YV%2F4ZnHht0M5E%2BXk9iDKQ%3D - person DeFeNdog; 22.01.2014
comment
Но ранее вы сказали, что получаете http://example.com/home1/myuser/public_html/demo/app/webroot/signup/0lj%2FK5aRN%2FqfcMbM%2B8VY3q%2B0%2FmFO4L09HHjKa50pim8%3D, поэтому правило работало, но поскольку в нем отсутствовало / до signup, вы получили этот путь. Так что я только что добрался до /signup/%1. - person anubhava; 22.01.2014
comment
Я понятия не имею. Я все еще получаю http://example.com/signup/?key=dT33Y%2FeKXCjgeo69XpTs39YV%2F4ZnHht0M5E%2BXk9iDK‌​Q%3D. Я хочу удалить ?key= - person DeFeNdog; 22.01.2014
comment
Является ли /signup каталогом? Есть ли еще правила в этом .htaccess? Есть ли там другие .htaccess? - person anubhava; 22.01.2014
comment
Да, /signup — это каталог. Ваш код — это единственное, что есть в файле htaccess. Файл htaccess находится по адресу /home1/myuser/public_html/demo/app/webroot. - person DeFeNdog; 22.01.2014
comment
давайте продолжим это обсуждение в чате - person DeFeNdog; 22.01.2014