2017-02-06 5 views
1

Я искал решение, но не могу найти его.PHP htaccess переписать URL с параметрами при сохранении индексной страницы

Проблема заключается в следующем:

У меня есть каталог на моем сайте, например domain.com/directory/. Я создал пользовательскую CMS с настраиваемыми URL-адресами, которые добавляются после directory/, например, domain.com/directory/example-page. Я использовал htaccess, чтобы переписать URL-адрес directory/post.php?url=xxx на directory/xxx

Проблема в том, что он не работает, так как у меня есть файл index.php, который я хочу продолжать использовать.

Я зафиксировал его, делая это так:

RewriteRule ^directory/subdirectory/(.*)$ directory/post.php?url=$1 [NC,L] [QSA] 

Но я не хочу, чтобы использовать дополнительный подкаталог в URL.

Итак, как я могу переписать directory/post.php?url=xxx в directory/xxx, сохраняя directory/, работая с index.php?

Я знаю, это звучит сложно, но я искал решение в течение нескольких дней.

Заранее благодарен!

+0

расположен Ваш Htaccess в корне? – starkeen

+0

@starkeen да это –

ответ

1

Вы можете использовать следующее правило

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^directory/([^/.]+)/?$ /directory/post.php?url=$1 [QSA,L] 
+0

Это сделало трюк, спасибо большое! –

1

Не уверен, правильно ли я понял проблему, но это должно сработать;

RewriteRule ^directory/?$ /index.php?url=test 
+0

Спасибо за ваше предложение, но проблема в том, что я хочу видеть мою страницу index.php при посещении domain.com/directory/, как обычно, но я также хочу перенаправить каталог/post.php? Url = xxx в каталог/xxx –

+0

@SenneVandenputte Это должно работать, но вам нужно добавить его как дополнительное правило перед другим. Это правило будет передано в index.php, если после 'directory /' ничего не будет, и ему понадобится флаг '[L]', чтобы сообщить ему прекратить обработку дополнительных правил. Если после 'directory /' есть что-то, это правило будет терпеть неудачу, а следующее будет обработано. –

+0

@JonathanKuhn Спасибо, но это все еще не совсем то, что я ищу. Я дам именно то, что я ищу. 'mydomain.com/guide /' содержит раздел моего сайта с руководствами и информацией по определенной теме. При посещении этого URL-адреса вам отображается страница индекса, что является нормальным. Существуют также другие файлы, такие как «руководства/покупки-руководства» и «руководства/учебные пособия», все они переписаны для удаления .php. Теперь у меня есть post.php, который использует параметры, которые нужно переписать. Поэтому мне нужно «domain.com/guides/post.php? Url = example» стать «domain.com/guide/example», сохраняя при этом мои другие файлы. –