2013-06-06 1 views
0

После многих часов исследования этого сайта (и google) я решил, что мне нужна помощь в решении этой проблемы. Я использую фрагмент кода в файле htaccess, который позволяет получить URL-адрес, включая расширение .php (например, www.mysite.com/about.php), оставляя расширение полностью без косой черты (например, www.mysite.com/about) или добавление косой черты в конце вместо расширения (например, www.mysite.com/about/).Борьба с «чистыми URL-адресами»

Так что эта деталь прекрасно работает. Однако он по-прежнему показывает расширение .php в адресной строке после того, как страница загрузится независимо от того, введен ли пользователь или нет. До сих пор я очень доволен тем, что он делает, как есть, но я бы просто хотел скрыть расширение и даже дойти до конца, и в конце концов ничего, что я делаю, работая в этом отношении. Надеюсь, некоторые из них имели смысл.

В настоящее время у меня это в файле htaccess.

RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^([^/]+)/$ http://mysite.com/test-server/$1.php 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
    RewriteRule (.*)$ http://mysite.com/test-server/$1/ [R=301,L] 

ответ

0

Это на самом деле плохой подход SEO-мудрый, потому что ваш контент доступен через несколько URL-адресов. Либо принудительно активируйте расширения, либо нет.

Я предпочитаю URL-адреса без расширения, поскольку это по какой-то причудливой причине. Я хочу переключить технологический стек (т. Е. На Rails). Я не придерживаюсь «.php» в конце моих URL-адресов.

Для этого вы можете просто переписать запросы на запрос без расширения на скрипт с «.php» в конце. В вашем .htaccess файла место следующее:

RewriteEngine on 

# redirect to extension-less URL if requested 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+ 
RewriteRule ^(.+)\.php $1 [R=301,L] 
+0

Это не работает для меня по какой-либо причине, хотя я, возможно, испортил часть расширения файла. Я пытаюсь заставить это работать в папке моего тестового сайта. – bobs

+0

Где находится папка вашего тестового сайта, и есть ли у вас какие-либо другие «RewriteRules» в вашем файле **. Htaccess **? –

+0

Он следует структуре, которую я использовал в моем примере кода. Я даже попробовал это на уровне корня с моим портфолио, и он все еще работал неправильно. – bobs

0

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

AddType text/x-component .htc 
RewriteEngine On 
RewriteBase/
# remove .php; use THE_REQUEST to prevent infinite loops 
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP 
RewriteRule (.*)\.php$ $1 [R=301] 
# remove index 
RewriteRule (.*)/index$ $1/ [R=301] 
# remove slash if not directory 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /$ 
RewriteRule (.*)/ $1 [R=301] 
# add .php to access file, but don't redirect 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) $1\.php [L]