проверка .htaccess перед развертыванием - PullRequest
0 голосов
/ 09 марта 2010

Чтобы улучшить SEO и более чистые URL-адреса, я склонен экспортировать некоторые RewriteRules непосредственно в .htaccess (например, RewriteRule ^The_North_Face(.*)$ index.php?a=brands&id=27&extras=%1 [NC,L] и т. Д. Для каждой марки или категории). Это намного сложнее, чем сегодня, но сегодня я обнаружил, что файл настолько хорош, насколько данные, которые он пытается использовать. Владельцу сайта удалось добавить пустые имена / URL-адреса категорий и некоторые неэкранированные символы, которые вызвали неприятную внутреннюю ошибку сервера, блокируя любой доступ к сайту (включая инструмент для его перестройки).

Я понимаю, что лучшей защитой здесь, вероятно, будет хорошая тренировка + отказоустойчивость на уровне CMS. К сожалению, это стороннее решение под названием CubeCart, в которое я пока что не могу углубиться, SEO-решение должно было быть автономным и использовать только данные CubeCart.

Очевидно, мне нужно было бы добавить несколько проверок для имен брендов / категорий / целевых страниц. Несмотря на это, я бы очень хотел проанализировать / проверить вновь созданный .htaccess перед заменой «живого», чтобы избежать возможных проблем с синтаксисом. Существуют ли какие-либо средства проверки синтаксиса / способы проверки Apache на новый .htaccess?

Я также могу подумать о развертывании его в подкаталоге, а затем использовать curl для получения нескольких запросов в качестве теста, что-нибудь еще, что я могу сделать?

Ответы [ 2 ]

1 голос
/ 09 марта 2010

Вы можете использовать что-то вроде WordPress:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

... а затем в файле index.php проанализируйте $_SERVER["REDIRECT_URL"] с логикой URI вашего сайта. Таким образом, вам будет проще обрабатывать любые переменные базы данных, такие как бренд или категория, автоматически через PHP, без редактирования файла .htaccess при каждом изменении содержимого.

1 голос
/ 09 марта 2010

Я бы предложил перенаправить все запросы в файл rewrite.php. Там вы анализируете запрошенный файл и сопоставляете его с массивом правил. Вы используете результат для заполнения массива $_GET и затем включаете правильный файл.

Синтаксические ошибки PHP найти гораздо проще, и вы точно не получите страницу с ошибкой 500.

...