.htacces & RewriteRule: все ссылки теперь не работают (после применения RewriteRule для изменения URL) - PullRequest
0 голосов
/ 19 августа 2011

После применения RewriteRule ^([^/]*)/$ /index.php?q=$1 [L] теперь вы можете ввести mysite.com/aboutus/, а также mysite.com/?p=aboutus. Теперь появилась другая проблема: Если вы наберете mysite.com/aboutus/, то страница и изображения будут загружаться нормально, но ссылки на странице mysite.com/aboutus/ будут выглядеть так: mysite.com/aboutus/index.php?p=link1 вместо mysite.com/index.php?p=link1 (также mysite.com/link1 будет еще лучше!) Как решить этот вопрос? Слишком много ссылок, чтобы заменить их вручную.

P.S. Каждая ссылка выглядит как <a href="?p=link1" > click here </a>, а НЕ как http://mysite.com?p=link1.

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Вы можете добавить еще один RewriteRule:

^(/[^/]+/index\.php\?p=([.]*)$ /index.php?p=$1 [L]

Это сделает ваши ссылки действительными, но излишними. На ваших страницах все еще будут ссылки типа http://mysite.com/path_1/index.php?p=link1 и http://mysite.com/path_2/index.php?p=link1.

1 голос
/ 19 августа 2011

.htaccess никоим образом не отвечает за то, как ваше программное обеспечение ссылается на вещи, оно переписывает входящие URL-адреса пользователя, а не ваши HTML-файлы.Если ссылки сделаны относительно пути, то вы в конечном итоге столкнетесь с проблемой, которую описываете.

Если вы автор программного обеспечения, у вас нет другого выбора, кроме как заменить ссылки,Если вы используете какое-то другое программное обеспечение, у него может быть опция для дружественных для поисковых систем URL.

...