.htaccess, чтобы получить санированные URL для страницы портфолио. - PullRequest
0 голосов
/ 26 марта 2020

Чтобы очистить URL-адреса в моем домене для целей SEO, мне нужно внести некоторые изменения в файл .htaccess, но мне нужна некоторая помощь с ним.

У меня есть следующие файлы:

  • ./index.php
  • ./work.php
  • ./project-page.php

И URL-адрес должен быть:


Первый вопрос: Нужно ли мне получить файл ./project-page.php в папке с именем work или он перенаправлен из файла .htaccess и как? Если ответ второй, я должен заменить URL-адреса внутри этого файла, такие как изображения и включения, верно?

Второй вопрос: Но что, если пользователь доберется до http://example.com/work/? Я получаю сообщение об ошибке, что эта страница не существует, и мне нужно, чтобы это тоже работало. Я не знаю, как лучше в этом случае.

Спасибо за ваши ответы!


РЕДАКТИРОВАТЬ:

У меня уже есть этот конфиг на моем .htaccess

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /

  #### PERSISTENT CONTENT ####

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

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^(.*)$ $1.php


  RewriteRule ^work-(.*)$ project-page.php?id=$1
</IfModule>

Итак, сейчас я могу получить доступ к example.com/work как ./work.php и example.com/work-first-project как ./project-page.php?id=1 НО я хочу, чтобы оно было example.com/work/first-project

Итак, лучше переместить ./project-page.php в новую папку с именем /work/, либо она не нужна. И как я могу заставить его работать как example.com/work/first-project с .htaccess или любым другим способом.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Не могу заставить его работать. Как предложил Шон, я поставил удаляющую конечную букву sh вверху перед другими предложениями. Теперь то, что нарушает весь документ, является последним смыслом. Который изначально ставился для удаления расширений файлов. Если я удалю эту вещь, остальные будут работать нормально.

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^(.*)/$ /$1 [R=301,L]
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^work/(.*)$ project-page.php?id=$1 [R=301,L]
  RewriteRule ^(.*)$ $1.php
</IfModule>
0 голосов
/ 26 марта 2020

Вы хотите использовать RewriteRules, например, они будут работать для первых двух примеров:

RewriteRule "^/$" "/index.php"
RewriteRule "^/work$" "/work.php"

https://httpd.apache.org/docs/2.4/rewrite/intro.html#rewriterule

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

Вы можете поместить один RewriteRule перед остальными в .htaccess, чтобы удалить завершающий sla sh

RewriteRule "^(.*)/$" "/$1"

Вы можете также используйте HTTP301 (постоянное) перенаправление с R=301 и убедитесь, что никакие дополнительные правила не обрабатываются после перенаправления с L.

RewriteRule ^(.*)/$ /$1 [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...