Apache видає помилку 500 внутрішнього сервера на піддомен, створений для мого домену


1

Я створив субдомен на ім'я http://admin.stenzsolutions.com і просто для тестування піддомену я розмістив той самий вміст, що і основний домен http://www.stenzsolutions.com

Тепер я зіткнувся з проблемою на піддомені ... Домашня сторінка завантажується чудово, але якщо натиснути будь-яке посилання, це дає мені помилку 500 внутрішніх серверів ... Такий самий вміст в основному працює як мрія, і немає проблем ... ось точний опис проблеми, з якою я стикався ...


Internal Server Error
---------------------

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache Server at admin.stenzsolutions.com Port 80

Я просто погуглив його і виявив, що може виникнути проблема з моїм файлом .htaccess ... Отже, ось мій файл .htaccess


RewriteEngine On

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

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

І ось точна помилка, яку я отримав із журналу помилок сервера


Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Спробуйте додати RewriteBase /одразу після цьогоRewriteEngine on

Це те саме ...

Насправді не питання щодо програмування - голосування для переходу на сервер за замовчуванням.
Конерак

будь ласка, хлопці ...

Що таке приклад URL, що спричиняє це?
Джон Лін

Відповіді:


1

Здається, що у вашому коді є абсолютні посилання. Замість того, щоб розібратися з переписувачами, які не повинні бути необхідними для такої справи, вам набагато краще зробити свої посилання відносними. Використовувати абсолюти для внутрішніх посилань, як ви зараз виявилися, є поганою практикою, оскільки це порушує мобільність і просто створює кошмар у підтримці.

Редагувати:

Найкраще перевірити проблеми в HTML, що виходить, а не вихідний код. Використовуючи Firefox або Chrome (і, можливо, кожен браузер, окрім IE), це найпростіше зробити за допомогою наступного "закладки" (створити закладку для будь-якої сторінки та замінити URL цим кодом).

javascript:%20var%20win%20=%20window.open();%20win.document.write('<html><head><title>Generated%20HTML%20of%20%20'%20+%20location.href%20+%20'</title></head><pre>'%20+%20document.documentElement.innerHTML.replace(/&/g,%20'&amp;').replace(/</g,%20'&lt;')%20+%20'</pre></html>');%20win.document.close();%20void%200;

Я не використав жодних абсолютних посилань у своєму коді ... Це реалізація Model View Controller ... Насправді ви навіть не можете виявити, який файл надається ...
Abilash

@Abilash, можливо, ви повинні вивчити результат HTML. Одна з речей, яку я дуже ненавиджу щодо MVC, - це те, що ви мало розумієте, яким буде отриманий код. Можливо, ви не використовували абсолютні посилання, але, не дивлячись, ви не можете знати, чи зробили це ваші реалізації MVC.
Джон Гарденє

У мене той самий вміст, що і на головному веб-сайті, тобто www.stenzsolutions.com. Це добре працює, але коли я розміщую його на піддомені, він не працює ... З цим можу я підтвердити, що це не проблема з моїм HTML?
Абілаш

@Abilash, Це, звичайно, не підтверджує ваш HTML нормально, адже це вказує на протилежне. Дивіться правки моєї відповіді.
Джон Гарденєр

0

.+також відповідають index.php. Це причина нескінченної петлі. Деякі способи виправити це:

  1. RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_URI} !^/index\.php
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
    
  2. RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-l
    
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 
    RewriteCond %{ENV:REDIRECT_STATUS} 200 
    RewriteRule .* - [L]
    

Ні ... це не працює :-( Будь-які інші рішення? Будь ласка, використовуйте testing.stenzsolutions.com, щоб побачити, що відбувається ..
Abilash
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.