2017-01-04 4 views
2

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

/publications/publications-1.php 
/publications/publications-2.php 
/publications/publications-3.php 

Я хочу изменить их их новые имена файлов:

/publications/1.php 
/publications/2.php 
/publications/3.php 

ответ

0

Попробуйте, как это в директории, где у вас есть ваши PHP-файлы,

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w-]+).php$ publications-$1.php [L] 
+0

Никогда не знал, что я мог бы поставить .htaccess файл в подкаталоге тоже! Однако у меня есть ошибка: HTTP ERROR 500 'страница не работает' –

+0

Каков ваш оригинальный URL? укажите полный URL-адрес, который вы вводите в браузер. –

+0

Таким образом, старый url был бы: http://www.biometricsltd.com/publications/publications-data.php И новый: http://www.biometricsltd.com/publications/data.php –

0

Добавить файл Htaccess в каталог WebRoot и добавить правило так:

Options +FollowSymLinks 

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^publications/(.*)\.php$ /publications-$1.php [L,QSA] 
</IfModule> 
## Results 
# publications/data.php => publications-data.php 

Он отображает любой запрос, который соответствовал условию к соответствующему файлу PHP под капотом. Если вам нужно перенаправить, добавьте флаг R в правило.

В случае, если вам нужно более общее правило, чтобы соответствовать что-либо в первом сегменте, попробуйте вместо этого:

RewriteRule ^(.*)/(.*)\.php$ /$1-$2.php [L,QSA] 
## Results 
# foo/bar.php => foo-bar.php 

И последнее, что нужно отметить, сделать модуль переписан уверен в Apache включен и Htaccess файлы разрешены (AllowOverride All в вашем httpd.conf):

# If enabled, outputs something like this: 
# rewrite_module (shared) 
apachectl -M | grep rewrite # It's apache2ctl on some platforms 

# If not enabled; you can enable it using this on most platforms: 
a2enmod rewrite 
apachectl restart 
Смежные вопросы