Я очень новичок в этих вопросах, пожалуйста, помогите.
У меня есть два вопроса относительно mod_rewrite (apache 2.2).
1) Я хочу, например, переписать / войти в login.php. Это может быть сделано с помощью
RewriteRule ^/?login/?$ /login.php [L]
Однако я тоже хотел отключить пользователям доступ к /login.php напрямую.
Если я просто напишу,
RewriteRule ^/?.*\.php$ /file_not_exist.html [L]
Это не работает, и даже / login будет переписан в /file_not_exist.html.
Есть ли способ сделать это? Я заметил, что в документах Apache 2.5 есть флаг [END], но я пока не могу использовать его в Apache 2.2.
2) Я хочу заменить все запросы ajax на / ajax / action, будет сделано следующее,
RewriteRule ^/?ajax/([a-zA-Z]+)/?$ /ajax/$1.php [L]
Однако, когда я пытаюсь получить доступ к / ajax / xyz, где xyz.php не существует, браузер покажет, что "/ajax/xyz.php" не существует, что даст ppl знать, что / ajax / действие реализовано с помощью /ajax/action.php.
Как отключить такое /ajax/xyz.php сообщение не существует? Единственный способ, о котором я могу думать сейчас, - это перечислить все файлы в направлении ajax и выполнить следующее:
RewriteRule ^ /? Ajax / (action1 | action2 | action3) /? $ /Ajax/$1.php [L]
Затем, когда пользователь получит доступ к / ajax / xyz, он просто скажет, что / ajax / xyz не существует, но не /ajax/xyz.php. Но это очень хлопотно. Есть ли лучший способ сделать это?
Большое спасибо!