Чтобы получить http://example.com/test , связав http://example.com/test.php , используйте:
RewriteEngine on
RewriteRule ^([^\.]+)$ /folder/$1.php [NC,L]
На самом деле это очень просто ... Я уверен, что вы можете просто показать UIAlertView, когда отображается делегат проверки подлинности (или до загрузки URL-адреса, если вы точно знаете, что URL-адрес, который вы нажимаете, будет запрашивать авторизация информации для входа). В любом случае, уловка состоит в том, чтобы создать собственное NSURLConnection
, и я использую некоторую логику, чтобы сохранить, использовался ли делегат аутентификации.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
{
NSLog(@"Did start loading: %@ auth:%d", [[request URL] absoluteString], _authed);
if (!_authed) {
_authed = NO;
/* pretty sure i'm leaking here, leave me alone... i just happen to leak sometimes */
[[NSURLConnection alloc] initWithRequest:request delegate:self];
return NO;
}
return YES;
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
{
NSLog(@"got auth challange");
if ([challenge previousFailureCount] == 0) {
_authed = YES;
/* SET YOUR credentials, i'm just hard coding them in, tweak as necessary */
[[challenge sender] useCredential:[NSURLCredential credentialWithUser:@"username" password:@"password" persistence:NSURLCredentialPersistencePermanent] forAuthenticationChallenge:challenge];
} else {
[[challenge sender] cancelAuthenticationChallenge:challenge];
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
{
NSLog(@"received response via nsurlconnection");
/** THIS IS WHERE YOU SET MAKE THE NEW REQUEST TO UIWebView, which will use the new saved auth info **/
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:]];
[_webView loadRequest:urlRequest];
}
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection;
{
return NO;
}
как вы знаете, UIWebView не предоставляет возможности связи с сервером. Я решил эту проблему следующим образом: в методе делегата должен былСтартЛоадЗадатьЗапрос UIWebView я инициирую очередное соединение с NSURLConnection, а уже в методе делегата NSURLConnection сделалReceiveAuthenticationChallenge обработал сгенерированный с сервера сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сгенерированный сенерик. А в методе didReceiveResponse (если вызов пришел), то снова в том же UIWebView загрузите тот же URL (вызов уже обработан:). Не забудьте отменить соединение в didReceiveResponse, иначе трафик удвоится.
.