Обнаружение пустой строки запроса с помощью mod_rewrite - PullRequest
0 голосов
/ 29 января 2012

У меня странная проблема, где для генерации страниц я использую свои URL как:

сайт / город / название города / номер страницы

для этого mod_rewrite:

RewriteRule ^city/(.*)/(.*)$ tagcity.php?tag=$1&pnum=$2 [L] 

Но теперь проблема в том, что если я удаляю название города и делаю его пустым, как «site / city // page-number», тогда он начинает принимать номер страницы в качестве названия города.

Также можно ли перезаписывать только одну страницу для страниц с номерами страниц или без них?

Мне знакома странная ситуация, но, к сожалению, некоторые страницы моего сайта проиндексированы в Google, как указано выше.

Как определить, что он пуст, чтобы я мог создать страницу 404?

1 Ответ

0 голосов
/ 29 января 2012

Вместо этого используйте +:

RewriteRule ^city/(.+)/(.*)$ tagcity.php?tag=$1&pnum=$2 [L,QSA]

* означает «0 или более повторений», тогда как + означает «1 или более повторений».Таким образом, использование + требует, чтобы в этом поле было как минимум что-то .


Кроме того, вы можете сделать это [L,QSA], чтобы при наличии каких-либоПараметры запроса в исходном URL, они будут сохранены.(QSA = Query String Append)


В соответствии с запросом в комментариях, правило с возможностью обрабатывать полностью отсутствующий номер страницы:

RewriteRule ^city/([^/]+)(?:/(.*))?$ tagcity.php?tag=$1&pnum=$2 [L,QSA]
...