2015-09-04 7 views
1

Это может выглядеть как серверный вопрос, но я думаю, что он принадлежит больше на SO, что на SF.Append .html to my href

Короче говоря, у меня есть сервер Nginx, который автоматически агрегирует .html моих страниц в интерфейсе, так что видеть только пользователи:

mysite.com/somepage 

вместо

mysite.com/somepage.html 

Так в моем код, мои ссылки выглядят так:

<ul> 
     <li class="current"><a href="somePage"></a></li> 
     <li class="menu"><a href="somePage2"></a></li> 
    </ul> 

Затем nginx работает со своей магией и добавляет .html ему тайно.

Конечно, это не работает в моей Dev среде (среде, контролируемой CodeAnywhere.com) так, чтобы он работал, я бы добавить расширения, как так:

<ul> 
     <li class="current"><a href="somePage.html"></a></li> 
     <li class="menu"><a href="somePage2.html"></a></li> 
</ul> 

Поскольку изменения этих HREF вручную каждый раз, когда я хочу перейти к производству и добавить обратно .html, когда я вытаскиваю копию и хочу закодировать, там должен быть простой способ.
В любом случае я могу обойти это с помощью HTML или JS? Или любые другие идеи вне коробки ... должны быть высоко оценены.

+1

Вы смотрели в настройке '.htaccess' файл? – Steve

+1

Вы используете веб-сервер на своей машине разработки? Можете ли вы настроить переписывание URL-адресов на этом сервере? – raduation

+0

@Steve Я не могу использовать такой файл, так как я на nginx, а не apache. Хотя мой dev envrionment может быть настроен с использованием apache, я думаю, я посмотрю на это. – phadaphunk

ответ

2

В вашем codeanywhere проводнике файлов вы можете вероятно добавить директивы переписывания к .htaccess файла:

Эта информация из codeanywhere:

  1. Если файл .htaccess не отображается в File Explorer у вас есть для добавления вашего сервера в SFTP.
  2. Если вы хотите отредактировать файлы .htaccess, убедитесь, что ваш сервер поддерживает его и что у вас есть правильный тип добавленного сервера.

В .htaccess файла попробуйте добавить это правило:

RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L] 

Это должно переписать foo.html в foo

More info here о .htaccess правила перезаписи.

+1

Как-то файл htaccess игнорируется во время выполнения. Я свяжусь с codeanywhere, чтобы точно знать, как им это нужно. – phadaphunk

+0

Да, наверное, хорошая идея; кажется, что могут быть некоторые конкретные подробности об этом, которые их документация не содержит. –

0

Поставь это временный script тег:

document.addEventListener("click",function(event){ 
 
    if(event.target.tagName=="A"){ 
 
    if(!event.target.href.endsWith(".html"))event.target.href+=".html"; 
 
    } 
 
});
<a href="something">hey</a>

+0

Это выглядит законным, когда я читаю код, но он не работает, когда я запускаю его. Он просто не добавляет .html в конце. – phadaphunk