Думаю, у вас возникнут проблемы с запретом доступа к реальному файлу .php, поскольку клиент должен иметь возможность его отображать.
Если вы используете чистые URL, я думаю, что поисковая система не сможет найти имена файлов, если вы не зарегистрируете их в своем коде и запретите доступ к каталогам.
Между прочим, ваша переписка, удобная для поисковых систем, должна выглядеть так:
RewriteRule ^design/$ /website-designing.php [L]
(Любой, кто пытается получить доступ к дизайну / получил обслуживание /website-designing.php: без перенаправления, поэтому вы не увидите имя в адресной строке).
Я никогда не использовал флаг nosubreq [NS]
. Говорят, что он фильтрует внутренний подзапрос, сгенерированный модулями. Но не уверен, что он работает с внутренними вызовами HTTP. (Поскольку вы переписываете правило, инициирующее новый запрос, все правила будут обработаны повторно, поэтому вы не можете просто запретить доступ ко всем файлам .php)
Может быть, вы можете попробовать:
RewriteRule ^.*\.php$ - [F,NS]
Но не ожидайте многого из этого.
Я попробую несколько трюков, чтобы посмотреть, работает ли что-нибудь.
Edit:
Кажется, что мы можем что-то сделать с: REDIRECT_URL
или REQUEST_URI
, кажется, что они сохраняются с переписыванием. Нравится:
RewriteCond %{REDIRECT_URL} \.php
RewriteRule ^.*$ - [F]
RewriteRule ^design/$ /website-designing.php [L]
Это должно запретить любой доступ при вызове файла .php в адресной строке.