Немножечко быдло-регулярка, но результат кода:
/* @var string Регулярное выражение для проверки */
$regex = '#^http(s?):\/\/domain\.com\/?(index\.html|test\.html)?$#';
/* @var array Проверяемые варианты */
$arVariant = [
'http://domain.com',
'https://domain.com',
'http://domain.com/',
'https://domain.com/',
'http://domain.com/index.html',
'https://domain.com/index.html',
'http://domain.com/test.html',
'https://domain.com/test.html',
'http://domain.com/blabla.html',
'https://domain.com/blabla.html',
'https://domain.com/test.html?page=1',
];
foreach( $arVariant as $variant )
{
if ( preg_match($regex, $variant) )
{
echo "Ссылка '{$variant}' не прошла валидацию".PHP_EOL;
}
}
Следующий:
Ссылка 'http://domain.com' не прошла валидацию
Ссылка 'https://domain.com' не прошла валидацию
Ссылка 'http://domain.com/' не прошла валидацию
Ссылка 'https://domain.com/' не прошла валидацию
Ссылка 'http://domain.com/index.html' не прошла валидацию
Ссылка 'https://domain.com/index.html' не прошла валидацию
Ссылка 'http://domain.com/test.html' не прошла валидацию
Ссылка 'https://domain.com/test.html' не прошла валидацию