Используйте .htaccess для перенаправления URL-адреса, исключая папку с изображениями - PullRequest
0 голосов
/ 03 июля 2018

My public_html выглядит следующим образом →

1. / изображение / [DIRECTORY]

2. / scripts / [DIRECTORY]

3. index.php [ФАЙЛ]

4. Logo.jpg

Существуют и другие файлы, такие как php.ini, error_log . И т. Д.

Я хочу, чтобы example.com/ seo-url был найден в моей таблице базы данных url_alis , для которого у меня есть код, написанный в scripts / get_url_info.php извлекать и выводить данные

Но любой другой файл, например

ICO | GIF | JPG | JPEG | PNG | JS | CSS

Папка

в image и style (для css) не должна обрабатываться по этому правилу

Я много пробовал, но одна из следующих проблем сохраняется

  1. Изображения и другие файлы также обрабатываются в соответствии с этим правилом, которое возвращает текст URL, который я использую для проверки функциональности get_url_info.php (например, запрос, имя файла и т. Д.)
  2. Перенаправление обрабатывается с расширением .php , за которым следует seo-url (apple-mangoes.php), который возвращает 404

  3. Если mysqli_num_rows == 0 в таблице db → url_alias из запроса в script / get_url_info.php , URL-адрес должен указывать на example.com, чего не происходит.

Файл My Current .htaccess (извинения за несогласованный код)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
RewriteRule    ^([^?]*)    scripts/get_url_info.php?url=$1    [L,QSA]    # Process all products
RewriteRule    ^/image/([^?]*)    /image/$1/$2    [L,QSA]    
RewriteRule ^(.*)$ /index.php [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

Основное требование здесь, если URL указывает только на текст (с такими символами, как (_, -,%, &) REQUEST_URI запрос, без a / прямая косая черта или без папки с отображаемым содержимым, она должна идти в мой сценарий get_url_info.php , в противном случае обычно обрабатывается весь контент.

Другие важные предварительные условия -

  • Force HTTPS

  • Force www

  • Перенаправить на index.php, если неверный URL или контент не найден

1 Ответ

0 голосов
/ 05 июля 2018

Сначала ответьте на свои предварительные требования, используйте код ниже в вашем файле .HTACCESS.

Force HTTPS:

### HTTP to HTTPS ###
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Force www:

### Redirect from non-www to www version ###
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{http_host} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,NC]

Перенаправить на index.php, если недопустимый URL-адрес или содержимое не найдено:

Для ошибки 404 используйте следующий код

### Custom Error Pages  ###
Options -Indexes
ErrorDocument 404 /html/404-error.html

так как вы хотите перенаправить их на домашнюю страницу, вы можете использовать

ErrorDocument 404 /index.php
...