2017-02-02 2 views
0

я написал некоторые правила в файле .htaccess, которые работают хорошо, правила, которые я написал, являются:удалить расширение .php с использованием Htaccess из определенного URL

# browser requests PHP 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\s/+(\S+?)\.php(/\S*)?\sHTTP [NC] 
RewriteRule^/%1%2 [L,R=301,NE] 

# check to see if the request is for a PHP file: 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^/?(.+?)(/.*)?$ /$1.php$2 [L] 

Проблема: Единственная проблема, которую я имею с ними в том, что он удаляет расширение .php из каждого URL-адреса, в результате мой запрос Ajax постоянно получает 404.

Для примера : На Боттоне вызов Ajax производится по адру как Ajax/x.php но из вышеприведенного правила он превращается в Ajax/x и вернуть 404.

Так что теперь вместо удаления .php расширения всех файлов, которые я хочу, чтобы удалить расширение .php именно из 2 файла, то есть a.php и b.php.

Нужна небольшая помощь с сообществом, я знаю, что я почти there.Any помощь будет оценена

ответ

1

Чтобы удалить расширение .php из 2 отдельных файлов, вы можете использовать это:

RewriteCond %{THE_REQUEST} /(a|b)\.php [NC] 
RewriteRule^/%1 [L,R] 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*?)/?$ /$1.php [L] 
0
First of all, when you remove the php extension from any url, you have to submit the form by changing removing the .php extension from the action such as 
<form class="form-horizontal" method="post" action="new_team" enctype="multipart/form-data"> 
Same thing also will apply to the ajax file such as 
$.ajax({ 
      url: 'php/contact_form_submit', 
      type: 'post' 

.htaccess should look like this 
Options +MultiViews 
RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?) 
RewriteRule^/%1 [R=301,L] 

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
# RewriteRule ^([^/]+)/$ http://url/$1 [R=301,L] 
RewriteRule ^([^/]+)/$ http://url/$1 [R=301,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
# RewriteRule ^(.+)\.php$ http://url/$1 [R=301,L] 
RewriteRule ^(.+)\.php$ http://url/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^/.]+)$ $1.php [L] 

so try it out and let me know if it solved