2014-09-20 2 views
0

Я хотел бы найти RewriteRule, который делает это:Htaccess RewriteRule, чтобы сократить URL-

mysite.net/jqMAS/ или mysite.net/jqMAS =>mysite.net/index.php?id=jqMAS

Я использовал такой .htaccess файл:

RewriteEngine On 
RewriteRule ^(.*) index.php?id=$1 

Но, к сожалению , он не работает (возможно, mysite.net/index.php сам перенаправляется на mysite.net/index.php?index.p hp и т. д.?): вызов mysite.net/jqMAS дает 500 Internal Server Error.

RewriteRule следует использовать для сокращения URL-адресов?


Вот что index.php страница (я не упомянул заголовки) выглядит следующим образом:

<body> 
    Bonjour <?php echo $_GET['id']; ?> 
    </body> 
+0

'это не работает', что не работает? – Qix

+0

@Qix: вызов mysite.net/jqMAS вызывает 500 Внутреннюю ошибку сервера. – Basj

+2

@Basj Что говорит журнал ошибок apache? –

ответ

1

Есть 2 Htaccess файлы: Держите ваш файл Htaccess в папке приложения, как: Запретить все.

и вставьте следующий код в файл Htaccess вне папки приложения:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Она работает идеально подходит для меня.

+0

Спасибо! Я все еще получаю «Внутреннюю ошибку сервера 500» ... Я не знаю, почему. Как насчет файлов с двумя файлами .htaccess? У меня только один. Можете ли вы рассказать о «Отрицании от всех»? Вы говорите о разрешениях файлов? Какие права доступа к файлам я должен установить для .htaccess и для index.php? 644? – Basj

+0

Вы получаете эту ошибку на локальном хосте или на сервере? – nagesh29

+0

Я не знаю причины. Я решил, установив все файлы на разрешение 644 и, наконец, использовал: '', 'RewriteEngine On',' RewriteBase/',' RewriteCond% {REQUEST_FILENAME}! -f', 'RewriteCond% {REQUEST_FILENAME} ! -d', 'RewriteRule^(. *) $ /index.php?id=$1 [L]', '' – Basj

1

Попробуйте следующий свой файл .htaccess, как это установка успешно используется на моем собственный сайт.

# Enable the rewriting engine. 
RewriteEngine On 

# Change requests for a shorter URL 
# Requires one or more characters to follow the domain name to be redirected 
RewriteRule  ^([A-Za-z0-9-]+)/?$  index.php?id=$1    [L] 
1

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

RewriteEngine On 

# if request is not for a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# if request is not for a file 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ index.php?id=$1 [L,QSA] 
Смежные вопросы