РЕДАКТИРОВАТЬ2
Хорошо, теперь я думаю, что понимаю ваш вопрос.
У вас есть url в play.php, который раньше обрабатывал все ваши URL, и вы хотите, чтобы онибыть перенаправлены на домашнюю страницу.
Вот два возможных решения.Это первое:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/play.php* [NC]
RewriteRule . /? [L,R=301]
</IfModule>
Выше будет перенаправлять любые запросы play.php на вашу домашнюю страницу с помощью перенаправления 301, что означает, что перенаправление является постоянным.Это отличается от перенаправления 302, которое является временным.Поэтому важно перенаправить, используя 301.
Также в этом правиле перезаписи нам не важно, существует URL или нет.Таким образом, вам не нужно иметь настоящий файл play.php или что-то еще.Он просто совпадает в зависимости от URL.
В строке для RewriteRule в конце стоит вопросительный знак, это означает удаление строки запроса из URL при перенаправлении.Я предполагаю, что вы не хотите, чтобы строка запроса переносилась.
[NC]
для сопоставления без учета регистра, поэтому /PlAy.php
также будет перенаправлен
Альтернативой является использованиедиректива Redirect:
Redirect 301 /play.php http://www.mysite.com/
Это сделает перманентное перенаправление 301 на вашу домашнюю страницу, если пользователь попытается перейти на play.php.Единственным недостатком этого является то, что строка запроса отображается.Вы можете добавить знак вопроса в конце, и он сотрет строку запроса.К сожалению, вопросительный знак остается.
Если у вас несколько конечных точек, а не просто play.php, вы можете сделать следующее:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/play\.php* [NC, OR]
RewriteCond %{REQUEST_URI} ^/another_url\.php* [NC]
RewriteRule . /? [L,R=301]
</IfModule>
Этот RewriteRule будет соответствовать play.php или another_url.php и do 301 перенаправляют на вашу домашнюю страницу.
В качестве альтернативы:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(play|another_url)\.php* [NC]
RewriteRule . /? [L,R=301]
</IfModule>
Вот альтернатива с использованием директивы Redirect
Redirect 301 /play.php http://www.mysite.com/
Redirect 301 /another_url.php http://www.mysite.com/
Альтернатива, которую вы также можете использоватьдиректива RedirectMatch для использования выражений регулярных выражений (заметьте, я на самом деле не проверял это)
RedirectMatch 301 /(play|another_url)\.php http://www.mysite.com/
EDIT
Игнорировать этот ответ.Я неправильно понял ваш вопрос.Следующее перенаправляет все запросы на index.php, если только файл или каталог не существует, что сейчас не то, что вы хотите, когда я прочитал ваш вопрос.
Вот как это делает Wordpres.Я полагаю, что у Zend и Joomla есть варианты этого.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress