La solución de caricatos está bien. Si hace falta añades en la llamada ajax una variable get llamada "ajax" con valor a uno para que funcione el IF que propone.
Lo que puedes hacer en lugar de incrustar la cabecera es hacer una redireccion 301 a la URL correcta en caso de que alguien acceda directamente al php. Así no tendrás duplicados y el propio google entenderá que la URL sin hash le lleva a la URL con hash.
Código:
if (!isset($_GET["ajax"])) {
header("Location: url buena");
exit;
}