URL перезаписать более одного файла php

У меня возникла проблема с перезаписью URL. Прежде всего, я начинаю думать, что ошибаюсь в структуре своей веб-страницы. Я сделал более одного файла php. Я думаю, что это ошибка, потому что во всех учебниках и примерах URL-адреса используются в .htaccess только index.php.

Информация 1. Я попал во вкладку навигации index.php section1.php section2.php section3.php section4.php 2. В index.php у меня есть только основная информация, которая не сильно изменится. 3. В каждом файле section.php я вывожу список статей. 4. У каждой статьи есть идентификатор, и я использую его для вывода информации, когда пользователь нажимает на ссылку статьи. 5. ссылка на статью "http://www.example.com/section1.php?id=607575" 6. В каждом файле section.php я получил более одной страницы. 7. На данный момент мои ссылки на страницу раздела выглядят так: "http://www.example.com/section1.php?page=1". Вопросы

Вопросы

  1. Должен ли я лучше отображать всю информацию на странице index.php, получая информацию из URL-адреса?
  2. Если теперь моя ссылка выглядит так <a href="http://www.example.com/section1.php?page=1>section1</a>, мне нужно вручную переписать их ИЛИ это не имеет значения, .htaccess сделает эту работу?
  3. если мне нужно переписать URL-адрес, он будет выглядеть так? <a href="http://www.example.com/section1.php/section1/page/1">section1</a>

  4. Как переписать URL-адреса, чтобы они выглядели так: www.example.com/section1/page/1 и www.example.com/section1/article/607575 (я знаю, что использовать только цифры — это плохо, мне просто нужно понять, как это работает , тогда я разберусь, как заменить его на название статьи).


person grab    schedule 03.01.2014    source источник


Ответы (2)


Если я правильно понимаю, то вот как вы бы переписали:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ /path/to/section1.php?page=$ [QSA,L]

Я не очень привык к mod_rewrite, но это должно сработать. Возможно, вам придется переписать правило и для ?article.

Если на этот вопрос не был дан правильный ответ, обратитесь к http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

person Nick Tucci    schedule 03.01.2014
comment
Спасибо за ответ! Это сработало . Но почему на это больше не влияет css? - person grab; 03.01.2014
comment
Вы должны сделать файл CSS глобальным. Так что, если ваш файл CSS сейчас href=style.css, вы должны сделать его www.example.com/css/style.css. - person Nick Tucci; 03.01.2014
comment
Работает как шарм, за исключением одного. На самом деле две вещи. Выдает ошибку, когда я пытаюсь добавить несколько условий перезаписи... Я сделал что-то вроде этого RewriteRule ^(.+)$/path/to/section1.php?page=$ [QSA,L] RewriteRule ^(.+)$/path/to/section1.php?article=$ [QSA,L] RewriteRule ^(.+)$/path/to/section2.php?page=$ [QSA,L] RewriteRule ^(.+)$/path/to/section2.php?article=$ [QSA,L] RewriteRule ^(.+)$/path/to/section3.php?page=$ [QSA,L] RewriteRule ^(.+)$/path/to/section3.php?article=$ [QSA,L] RewriteRule ^(.+)$/path/to/section4.php?page=$ [QSA,L] RewriteRule ^(.+)$/path/to/section4.php?article=$ [QSA,L] - person grab; 03.01.2014
comment
Вы можете попробовать использовать то, что сделала Стефани, или убрать [L] у всех, кроме последнего. - person Nick Tucci; 03.01.2014
comment
Оба варианта не сработали. Я думаю, что мне нужно вызвать RewriteCond, прежде чем я снова вызову RewriteRule, но это не работает так, как планировалось. И ваш пример показывает example.com/section1, но мне нужно /example.com/section1/page/1 и после того, как пользователь выберет статью /example.com/section1/23453 Есть идеи? - person grab; 03.01.2014

От 1_

To: http://www.example.com/section1.php?page=1

RewriteRule ^section(\d+)/page/(\d+)$ /path/to/section$1.php?page=$2

От кого: http://www.example.com/section1/article/607575

To: http://www.example.com/section1.php?id=607575

RewriteRule ^section(\d+)/article/(\d+)$ /path/to/section$1.php?id=$2

person Stephanie Gratzer    schedule 03.01.2014
comment
привет Стефани. Спасибо за ответ. Я борюсь уже много часов и не могу этого сделать. Я прочитал руководство по переписыванию модов Apache и все еще не мог понять это правильно. Я предполагаю, что ваше предложение не работает из-за части $1 раздела $1. Мне нужно, например: dom.com/cars.php?page=1 на dom.com/cars/page/1 и когда пользователь нажимает на статью dom.com/cars.php?id=3452 на dom.com/cars/ id/3452 также я получил ошибку, когда пытался использовать несколько строк кода, мне нужно добавить dom.com/bikes.php?page=1 ect. переписать. - person grab; 04.01.2014